在Excel VBA中,如何编写一个可以在数组公式中使用的函数?

在Excel VBA中,我知道我可以在多个单元格上使用一个数组公式,selectCol C的单元格范围,然后按= A1:10 * B1:B10 Ctrl-shift-enter。

但是,假设代替乘法运算符,我希望它成为我的主人。

我将如何编写mymult函数?

Function MyMult(a As Integer, b As Integer) MyMult = a * b End Function 

我有什么不工作

在这里输入图像说明

将参数声明为变体。 然后使用Application.Caller.HasArray检查UDF是否被用作数组公式:

 Public Function MyMult(a, b) If Application.Caller.HasArray Then Dim valsA(), valsB(), r& valsA = a.Value valsB = b.Value For r = LBound(valsA) To UBound(valsA) valsB(r, 1) = valsA(r, 1) * valsB(r, 1) Next MyMult = valsB Else MyMult = a * b End If End Function 

请注意,在按下CTRL + SHIFT + ENTER之前,您需要selectC1:C3。