Matriz inversa con excel desde VB6
Publicado por Juan Carlos Gutiérrez (1 intervención) el 17/05/2012 20:20:37
Hola,
Tengo un problemilla que no consigo solucionar. Quiero calcular la inversa de una matriz. Esto es una tarea fácil por ejemplo con EXCEL utilzando la función MINVERSA. El problema es que quiero aprovechar esa funcionalidad de EXCEL desde VB6.
He probado lo siguiente:
Dim objExcel As Object
Set objExcel = CreateObject("Excel.application")
With objExcel
'Añadiendo un workbook
.workbooks.Add
For fila = 1 To 5
For columnas = 1 To 5
Randomize Timer
valor = Rnd * 100
.cells(fila, columnas) = valor
Next columnas
Next fila
.cells(7, 1) = ("=MINVERSE(A1:E5)")
.Columns("A:A").entirecolumn.autofit
End With
objExcel.Visible = True
Set objExcel = Nothing
Esto funciona bien, pero el problema es que sólo obtengo el elemento (1,1) de la matriz inversa en la celda (7,1)
En EXCEL esto se soluciona seleccionando el rango de la matriz donde deben aparecer los valores de la inversa y hacienco CONTROL+SHIFT+ENTER, con lo que se consigue que la formula se extienda al rango de la matriz y aparezca como {=MINVERSA(A1:E5)}. Por tanto probé:
.cells(7, 1) = ("{=MINVERSE(A1:E5)}") pero nada. ¿Alguien me podría ayudar?
Gracias
Tengo un problemilla que no consigo solucionar. Quiero calcular la inversa de una matriz. Esto es una tarea fácil por ejemplo con EXCEL utilzando la función MINVERSA. El problema es que quiero aprovechar esa funcionalidad de EXCEL desde VB6.
He probado lo siguiente:
Dim objExcel As Object
Set objExcel = CreateObject("Excel.application")
With objExcel
'Añadiendo un workbook
.workbooks.Add
For fila = 1 To 5
For columnas = 1 To 5
Randomize Timer
valor = Rnd * 100
.cells(fila, columnas) = valor
Next columnas
Next fila
.cells(7, 1) = ("=MINVERSE(A1:E5)")
.Columns("A:A").entirecolumn.autofit
End With
objExcel.Visible = True
Set objExcel = Nothing
Esto funciona bien, pero el problema es que sólo obtengo el elemento (1,1) de la matriz inversa en la celda (7,1)
En EXCEL esto se soluciona seleccionando el rango de la matriz donde deben aparecer los valores de la inversa y hacienco CONTROL+SHIFT+ENTER, con lo que se consigue que la formula se extienda al rango de la matriz y aparezca como {=MINVERSA(A1:E5)}. Por tanto probé:
.cells(7, 1) = ("{=MINVERSE(A1:E5)}") pero nada. ¿Alguien me podría ayudar?
Gracias
Valora esta pregunta


0