这段代码是什么我工作的一小部分。 我已经缩小的问题,下面的这个作品。 我有这样的UDF SampleFunction,向其中我需要通过一个Array,{3; 4}作为唯一的参数。
Function SampleFunction(InputVar As Variant) As Integer
SampleFunction = InputVar(LBound(InputVar))
End Function
我把这个UDF两种不同的方式。 首先,通过VBA
情况1:
Sub testSF()
MsgBox SampleFunction(Array(3, 4))
End Sub
其次,通过我的Excel工作表
案例2:
={SampleFunction(ROW(3:4))}
- >即,作为阵列的功能。
问题:
该UDF工程案例1,即通过VBA调用,它给出了一个#VALUE
错误案例2,当我把它通过Excel工作表。
我通过使用F8用于情况2的功能阶梯Lbound(InputVar)
的计算结果为1(这是不同从副调用案例1中,它的计算结果为0),但InputVar(Lbound(InputVar))
示出了“下标超出范围”的错误案例2。
所有我想知道的是如何从一个工作表调用SampleFunction功能 ,即第2种情况,使其具有如案例1中所示的相同的行为。 作为奖励,这将是很好,如果有人可以解释为什么Lbound(InputVar)
在上述情况下的计算结果是不同的。
其他一些细节:
我建立一个UDF来执行一些正则表达式的操作。 这个论点InputVar
以上,将是一个数组{X; Y; Z; ...}指明第x,y个,第i ...出现次数。 的数据类型InputVar
保持为变体,因为我希望能够通过其中的数字(为一个长度阵列),阵列或范围(在截取并转换成数组)的功能。
提前致谢!!