【发布时间】:2016-03-24 17:50:19
【问题描述】:
我创建了一个名为 test
的函数Function test(a() As Variant)
Debug.Print "Type: "; TypeName(a)
Debug.Print "lb: "; LBound(a)
Debug.Print "ub: "; UBound(a)
test = a(UBound(a))
End Function
打字没问题
=test({4,5,6,8,9})
在一个单元格中。它返回 9。
让我们在工作表上添加一些数据。
A B
1 1 3
2 0 6
3 1 9
4 0 7
5 1 8
我在单元格中使用 ctrl+shift+enter 键入以下公式。
{=test(IF(A1:A5=1,B1:B5))}
我认为一个数组被传递到 test 但它不起作用。它可以像往常一样返回 LBound(a) 和 UBound(a) 但 test = a(UBound(a)) 失败。
有什么问题?如何编写一个写入 VBA 用户定义函数以从 IF 获取数组参数。
【问题讨论】:
-
=test{(IF(A1:A5=1,B1:B5))}试试这个
标签: arrays vba excel user-defined-functions