首页 文章

在Excel VBA中,如何编写可以在数组公式中工作的函数?

提问于
浏览
2

在Excel VBA中,我知道我可以在多个单元格上使用数组公式,通过选择Col C的单元格范围,并执行= A1:10 * B1:B10 Ctrl-shift-enter .

但是假设不是乘法运算符,我希望它是我的mymult .

我该如何编写mymult函数?

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

我所拥有的不起作用

enter image description here

1 回答

  • 5

    将参数声明为变体 . 然后使用 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之前需要选择C1:C3 .

相关问题