VBA。比较锯齿状阵列会导致“类型不匹配”

时间:2018-04-17 13:43:33

标签: excel vba excel-vba

我很难弄清楚这段代码应该是什么的错误。我想知道是否有人可以帮助我。任何想法都会非常感激,我在VBA中很新。

我的代码是:

    Dim table() as Variant: table = Array(Array(0,0,0))
    Dim aux() as Variant: aux = Array(0,0,0)
    If table(0) = aux then
    End If

代码甚至不执行,Excel在If行中抛出不匹配异常。我已经以各种可能的方式“解释”了代码并且没有成功地使代码工作(当然代码并不像这个那么简单,但是这个代码什么都不执行也不执行...)

提前感谢您的时间,

1 个答案:

答案 0 :(得分:2)

如果你想比较两个一维数组的相等性,如你提供的示例代码所示,那么你需要使用Join函数,如下所示:

Sub tst()

    Dim table() As Variant: table = Array(Array(0, 0, 0))
    Dim aux() As Variant:   aux = Array(0, 0, 0)

    If Join(table(0), ",") = Join(aux, ",") Then
        MsgBox "The same"
    Else
        MsgBox "Not the same"
    End If

End Sub

注意,请确保正在使用的Join分隔符不在任何正在测试的数组的任何元素中。 John Coleman提出了一个很好的观点,即当使用逗号分隔符时,这可能会对(0, "0,0")数组产生误报。如提供的答案所示。