Quisiera saber por que mi macro me da error 1004

La rutina es la siguiente es hacer una multiplicación de matrices el problema es que una matriz esta en una hoja llamada "Matriz Rigidez Global" y la otra esta en otra hoja llamada "Igualación Grados de libertad". El código es el siguiente:
'Crea la Matriz IGUALADA
Dim TFILA As Integer, TCOL As Integer
Dim Mrig As Range, Migu As Range
NPX = Worksheets("Datos de Entrada").Range("E2").Value
NPI = Worksheets("Datos de Entrada").Range("E3").Value
TFILA = 2 * (NPX + 1) + (NPX + 1) * (NPI + 1) + NPX + 1 + NPI
TCOL = 3 * (NPI + 1) * (NPX + 1)
Set Mrig = Worksheets("Matriz Rigidez Global").Range(Cells(3, 2), Cells(2 + TCOL, 1 + TCOL))
Set Migu = Worksheets("Igualacion Grados de libertad").Range(Cells(6, 3), Cells(5 + TCOL, 2 + TFILA))
Worksheets("Igualacion Grados de libertad").Range(Cells(9 + TCOL, 3 + TFILA), Cells(8 + TCOL + TFILA, 2 + 2 * TFILA)).FormulaArray = WorksheetFunction.MMult(WorksheetFunction.Transpose(Migu), WorksheetFunction.MMult(Mrig, Migu))

1 respuesta

Respuesta
1
Necesito más información ¿Qué dice el error?
Mira el error esta en la linea que dice Set Mrig =...
Y el error es el siguiente:
Se ha producido el error '1004' en tiempo de ejecución:
Error definido por la aplicación o el objeto
Es complicado porque ese error te lo puede dar por casi cualquier cosa, puedes empezar por declarar las variables que faltan como NPX, ¿dime exactamente donde te da el error?
Cuando tiene un error la macro sale una ventana de dialogo donde te avisa del error y puedes elegir depurara el archivo, en ese caso se marca en amarillo la linea donde tienes el error, en t caso ¿En qué linea te marca el error?
El error me lo da cuando el programa llega a la linea donde dice:
Set Mrig = Worksheets("Matriz Rigidez Global").Range(Cells(3, 2), Cells(2 + TCOL, 1 + TCOL))
Y de ahí en adelante me bota el mismo error en las siguientes lineas
El problema no es NPX ni NPI por que han funcionado muy bien antes, están declarados como integer desde mucho antes, es que este código solo es una parte de un programa más largo y lo único que necesito es multiplicar dos matrices: una se encuentra en una hoja y otra en otra hoja, la ultima parte es la que hace la multiplicación.
la multiplicacion es la siguiente: [A]transpuesta**[A]
A: Esta en la hoja "Igualación Grados de libertad"
B: Esta en la hoja "Matriz Rigidez Global"
Y los datos que definen posición y tamaño de la matriz B y creación de la misma son NPI y NPX esos no son el problema
Set Mrig = Worksheets("Matriz Rigidez Global").Range(Cells(3, 2), Cells(2 + TCOL, 1 + TCOL))
Pues ese renglón se ve muy raro, porque separas cells con una coma, tal vez ese es el problema
Si, yo creo, pero no conozco otra forma de crear un rango que se modifique su tamaño con variables, si tienes alguna sugerencia te lo agradezco
Se me ocurre que puedes utilizar las instrucciones xlDown xltoRigth para seleccionar hasta la ultima celda no vacía y así seleccionas la matriz completa no importa su tamaño, si no conoces las instrucciones es lo equivalente a situarte en la primera celda y después presionar la tecla control y los cursores de movimiento, prueba con la grabadora de macros para que veas como funciona, la pruebas y me avisas

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas