使用用户定义的函数通过 ParamArray 传递数组
Passing arrays through ParamArray with user-defined functions
VBA 的新手。我在使用以下用户定义函数代码时遇到两个问题。我不知道如何通过 ParamArray 传递数组。
1) bool() 的打印类型应该是 8203。但是 test() 的打印类型是 8204,所以它们为空或无效。 编辑:指出 8204 是由于 Variant 类型。
2) 我不确定我是否使用 "A(0)(1,1)" 正确地调用了嵌套数组中的元素。我无法通过 Test() 函数打印或调用 A() 的值。
在单元格公式中:
=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 是必需的,我只是不在这个例子中说明原因。
8204 is expected because ParamArray A() As Variant
is a variant array.
vbVariant = 12
vbArray = 8192
8192 + 12 = 8204
你有两个问题,首先A(0)是参数1,内容是out(u,v),所以
debug.print A(0) 会出错,第二个你的函数测试没有 return 值
运行 的代码如下:
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
问题已通过删除 Debug.Print A(0) 得到解决。并通过修复原始 post.
中不存在的另一个错字
VBA 的新手。我在使用以下用户定义函数代码时遇到两个问题。我不知道如何通过 ParamArray 传递数组。
1) bool() 的打印类型应该是 8203。但是 test() 的打印类型是 8204,所以它们为空或无效。 编辑:指出 8204 是由于 Variant 类型。
2) 我不确定我是否使用 "A(0)(1,1)" 正确地调用了嵌套数组中的元素。我无法通过 Test() 函数打印或调用 A() 的值。
在单元格公式中:
=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 是必需的,我只是不在这个例子中说明原因。
8204 is expected because
ParamArray A() As Variant
is a variant array.
vbVariant = 12
vbArray = 8192
8192 + 12 = 8204
你有两个问题,首先A(0)是参数1,内容是out(u,v),所以 debug.print A(0) 会出错,第二个你的函数测试没有 return 值 运行 的代码如下:
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
问题已通过删除 Debug.Print A(0) 得到解决。并通过修复原始 post.
中不存在的另一个错字