VBA的新手。对于用户定义的函数,以下代码存在两个问题。我不知道如何通过ParamArray传递数组。
1] bool()的打印类型应该是8203。但是test()的打印类型为8204,因此它们为null或无效。编辑:指出8204是由于Variant类型引起的。
2)我不确定是否使用“ A(0)(1,1)”从嵌套数组中正确调用元素。我无法从A()的Test()函数打印或调用值。
在单元格公式中:
=Test(bool())
在VBA编辑器中:
Function Test(ParamArray A() As Variant)
Debug.Print VarType(A)
Debug.Print A(0)(1,1)
Test = A(0)(1, 1)
End Function
Function bool()
Dim out() As Boolean
Dim u As Integer, v As Integer
ReDim out(1 To 3, 1 To 2)
For v = 1 To 2
For u = 1 To 3
out(u, v) = True
Next u
Next v
Debug.Print VarType(out)
bool = out
End Function
ParamArray是必需的,在这个示例中我没有说明为什么。
您有两个问题,首先是A(0)是参数1,内容是out(u,v),所以debug.print A(0)将给出错误,其次是功能测试,没有返回值和运行代码如下:
Function Test(ParamArray A() As Variant)
msgbox "1" & ubound(A)
Debug.Print A(0)(1, 1)
Test = A(0)(1, 1)
msgbox "2" & ubound(A)
End Function
Function bool()
Dim out() As Boolean
Dim u As Integer, v As Integer
ReDim out(1 To 3, 1 To 2)
For v = 1 To 2
For u = 1 To 3
out(u, v) = True
Next u
Next v
Debug.Print VarType(out)
bool = out
End Function