VBA矩阵乘法

时间:2018-06-19 14:31:31

标签: vba matrix

我正为“运行时错误'1004':无法获取WorksheetFunction类的MMult属性”而苦苦挣扎。我使代码尽可能简单,但仍然无法正常工作。

我很感谢提示

Sub Matrix_Computation3()

Dim ws3 As Worksheet
Dim ArrP As Variant
Dim ArrCW As Variant
Dim Temp As Variant
Dim Size

 Set ws3 = Sheets("STEP 3")

 Size = 6

 ReDim ArrP(1 To 1, 1 To Size)
 ReDim ArrCW(1 To Size, 1)

 ArrP(1, 1) = 0.2
 ArrP(1, 2) = 0.2
 ArrP(1, 3) = 0.2
 ArrP(1, 4) = 0.2
 ArrP(1, 5) = 0.2
 ArrP(1, 6) = 0.2

 ArrCW(1, 1) = 0.3
 ArrCW(2, 1) = 0.3
 ArrCW(3, 1) = 0.3
 ArrCW(4, 1) = 0.3
 ArrCW(5, 1) = 0.3
 ArrCW(6, 1) = 0.3

 Temp = ws3.Application.WorksheetFunction.MMult(ArrP, ArrCW) ' here is an error
 MsgBox Temp(1)

End Sub

1 个答案:

答案 0 :(得分:1)

您传递的MMULT是错误的数组。这是一个工作表功能,而不是VBA功能。数组的工作表版本是一个单元格范围,因此将值放入两个工作表范围并在其中引用它们。

例如,您的部分代码可能是:

Dim range1 as Range, range2 as Range
Set range1 = ws3.Range("A1:D1")
Set range2 = ws3.Range("E1:E4")
Temp = ws3.Application.WorksheetFunction.MMult(range1, range2)

还请注意, array1中的列数必须与array2中的行数相同,并且两个数组都只能包含数字。

在尝试从VBA调用该函数之前,也许让该函数在工作表上起作用。


更多信息: