我有一个单元格,其值为数组常量,
例如,单元格A1设置为={1,2,3,4,5,6}
然后我在VBA中定义了一个函数:
Function MyFunc(Data)
MyFunc = Data.Rows.Count
End Function
我希望函数在可以=MyFunc(A1)
的情况下返回数组的长度(6),但是使用调试器,我发现函数接收的'Data'变量仅包含该数组的第一个元素。
Data.Rows.Count
的值为1,而TypeName(Data)
的值为“ Range”
答案 0 :(得分:5)
另一种方法:
Function myFunc(Data)
myFunc = UBound(Evaluate(Data.Formula))
End Function
答案 1 :(得分:3)
我不确定您的用例是什么,但是我认为您可以在这里使用Split
。
Function MyFunc(ByVal Data As Range) As Long
Dim x
x = Split(Data.Formula, ",")
MyFunc = UBound(x) + 1
End Function
显然,这可以变得更健壮(例如处理多单元输入),但我认为它可以使您朝着正确的方向前进。
答案 2 :(得分:3)
可能是
Function MyFunc(data As Range)
Dim x
x = Split(Mid(data.Formula, 3), ",")
MyFunc = UBound(x) + 1
End Function