Error '1004' al aplicar WorksheetFunction.Mmult

sanraso

New Member
Joined
Apr 26, 2007
Messages
11
Al correr las siguientes líneas:
Code:
Dim MatT
ReDim MatT(1 To NumEc)
MatT = Application.WorksheetFunction.MMult(MatInvA, matB)
Me da el error siguiente en dicha línea:
...error '1004' en tiempo de ejecución.
No se puede obtener la propiedad MMult de la clase WorksheetFunction.

NumEc = 36

Una inspeccón parando en dicha línea indica que MatT está vacío y es del tipo Variant/Variant (1 to 38), MatInvA es del tipo Variant/Variant (1 to 38, 1 to 38), y que matB es tipo Variant/Variant(1 to 38) y no está vacío.

Alguien sabe que quiere decir el código del error dado, y cual puede ser el problema?
 

Excel Facts

Is there a shortcut key for strikethrough?
Ctrl+S is used for Save. Ctrl+5 is used for Strikethrough. Why Ctrl+5? When you use hashmarks to count |||| is 4, strike through to mean 5.
No puede haber posiciones vacias...Reemplaza por 0 esas posiciones si pretendes que ese sea el valor
El numero de columnas de la Primera Matriz tiene que ser igual al de filas de la segunda matriz.
La Matriz Resultado tiene que tener el numero de filas de la Primera y el de columnas de la segunda
de no cumplirse todo: Error!!

GALILEOGALI
 
Upvote 0
Previo a la multiplicación:
matB no está vacío y es de 38 elementos
MatInvA tampoco está vacío y es de 38x38
MatT (previo a la multiplacion) es de 38 elementos, variant y vacío.
Quieres decir que haga MatT(j)=0 previo a la multiplicación?
 
Upvote 0
La matriz para los resultados bien puede estar Vacia.
Pero sigo insistiendo con las dimensiones:
tienen que tener la Matriz resultado: el mismo Numero de filas del Primer Factor y l Numero de Columnas del Segundo Factor.

Por otra parte :
la Cantidad de columnas del Primer Factor tiene que ser igual al numero de filas del Segundo Factor.

Las restricciones a Posiciones Vacias son para los Factores no para el resultado del producto
 
Upvote 0
Entiendo lo que dices, pero acaso eso no se está cumpliendo en este caso?
Como dije antes según la inspección parando en la línea de la multiplicac., es decir antes de realizarla, las dimensiones según veo yo concuerdan con lo anterior, ya que
matriz resultado sería de (1 a 38)
MatInvA, primer factor de la multiplicac. sería (1 a 38, 1 a 38)
MatB, segundo factor, sería (1 a 38), por lo cual:
MatT(38)=MatInvA(38x38).MatB(38).

Estoy en lo correcto o no?
 
Upvote 0
Ejemplo:
(cambié 38 por 4, para reducir datos)

En hoja excel:
RNG1 es "A1:D4", CON DATOS incluido "0", PERO no-vacios
RNG3 es "F1:F4"

Code:
Option Base 1
Sub PROBAR_Mmult()
Dim ARR1 As Variant, ARR2 As Variant, ArrResult As Variant

ARR1 = Range("rng1")
ARR2 = Range("Rng3")
ArrResult = Application.WorksheetFunction.MMult(ARR1, ARR2)
Range("f7:f10").Value = ArrResult


End Sub


Esto funciona y no arroja ningun error.
 
Upvote 0
Para mi ambos un variant no definido como matriz tanto como un variant sí declarado como matriz me sirven
Code:
Sub TestMMult()
    '// Test5x5 = range("A1:E5")
    '// Text1x5 = range("A11:A15")
    
    Dim a, v, fn As WorksheetFunction
    ReDim a(1 To 5)
    
    Set fn = Application.WorksheetFunction
    v = fn.MMult([Test5x5], [Test1x5])
    
    Range("F11:F15") = v
    
    a = fn.MMult([Test5x5], [Test1x5])
    
    Range("H11:H15") = a
End Sub

Noté esto en su primer mensaje...
...NumEc = 36...
No sé si eso fue un error al momento de teclar el mensaje y NumEc actualmente vale 38 o si esto puede ser su problema.
<hr />
¡Hola, Gali! Me gusta su foto. ¿Cerca de Urdampilleta?
 
Upvote 0
Creo que Gali ya encontró la parte clave, la dimensión de los variants no import. A pesar de dimensionar a de 1 a 4, esto siempre funciona...
Code:
Sub TestMMult()
    '// Test5x5 = range("A1:E5")
    '// Text1x5 = range("A11:A15")
    
    Dim a, v, fn As WorksheetFunction
    ReDim a(1 To 4)
    
    Set fn = Application.WorksheetFunction
    v = fn.MMult([Test5x5], [Test1x5])
    
    Range("F11:F15") = v
    
    a = fn.MMult([Test5x5], [Test1x5])
    
    Range("H11:H15") = a
End Sub

Pero si borro una celda en Test5x5 o Test1x5, entonces sí me da el mismo error -- 1004. Mejor revise MatInvA y matB otra vez. Parece que el problema se encuentra dentro de los valores en los Inputs.
 
Upvote 0
Greg: Lamentablemente el paisaje cercano es la Pampa Humeda, una llanura plana donde las alturas máximas son las de las innumerables vacas que la pueblan. La imagen es de otro sitio de mi país, más turístico, por cierto: Bariloche, aunque.......en los hoteles y restaurantes de los mejores lugares turísticos los visitantes extranjeros elogian las carnes que producimos en esta zona bastante más aburrida....


GALI
 
Upvote 0

Forum statistics

Threads
1,215,143
Messages
6,123,277
Members
449,093
Latest member
Vincent Khandagale

We've detected that you are using an adblocker.

We have a great community of people providing Excel help here, but the hosting costs are enormous. You can help keep this site running by allowing ads on MrExcel.com.
Allow Ads at MrExcel

Which adblocker are you using?

Disable AdBlock

Follow these easy steps to disable AdBlock

1)Click on the icon in the browser’s toolbar.
2)Click on the icon in the browser’s toolbar.
2)Click on the "Pause on this site" option.
Go back

Disable AdBlock Plus

Follow these easy steps to disable AdBlock Plus

1)Click on the icon in the browser’s toolbar.
2)Click on the toggle to disable it for "mrexcel.com".
Go back

Disable uBlock Origin

Follow these easy steps to disable uBlock Origin

1)Click on the icon in the browser’s toolbar.
2)Click on the "Power" button.
3)Click on the "Refresh" button.
Go back

Disable uBlock

Follow these easy steps to disable uBlock

1)Click on the icon in the browser’s toolbar.
2)Click on the "Power" button.
3)Click on the "Refresh" button.
Go back
Back
Top