Join()上的ByRef参数类型不匹配错误

时间:2012-10-26 16:31:38

标签: vba excel-vba byref excel

我已经查看了此处报告的ByRef错误,但仍无法找到我的方式错误。

我有这个,其中OrderedCaseList()是Variant类型的函数。它被正确调用并按预期返回一个数组。

然而,当我尝试编译时,我在Join(arr...命令上得到“ByRef参数类型不匹配”。我不知道为什么......

Private Sub worksheet_Activate()
Dim s As String
Dim arr() As String
Dim var As Variant
Dim i As Long, j As Long

var = OrderedCaseList(True)
ReDim arr(0 To UBound(var))

j = UBound(var)

For i = 0 To j
  arr(i) = var(i)
Next

s = Join(arr, ",")
Range("c16").Validation.Add Type:=xlValidateCustom, Formula1:=s

End Sub

注释掉最后两行代码时的变量监视输出是:

OrderedCaseList, Type: Variant/Variant
Expression:OrderedCaseList(0), Value:"Case 1", Type:Variant/String
etc.

Var, Type@ Variant/Variant
Expression: Var(0), Value:"Case 1", Type:Variant/String
etc.

arr, Type:String(0 to 3)
Expression:arr(0), Value:"Case 1", Type:String

感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

你的代码看起来很好,无论我如何设置函数 OrderedCaseList (我不认为 ),我无法破解它)。

您是否有可能引用包含JOIN功能的第三方dll?

您可以通过更改此行来验证您是否正在调用VBA函数:

s = Join(arr, ",")

到此:

s = VBA.Strings.Join(arr, ",")

并查看它是否编译