我正为“运行时错误'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
答案 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调用该函数之前,也许让该函数在工作表上起作用。
Office.com:MMULT
function(Excel)
Office.com:WorksheetFunction.MMult
method(VBA)