VBA。比较锯齿状阵列的结果为;“类型不匹配”;

VBA。比较锯齿状阵列的结果为;“类型不匹配”;,vba,excel,Vba,Excel,我很难找出这段应该是基本的代码有什么问题。我想知道是否有人能帮我一把。任何想法都将非常感谢,我是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行中抛出不匹配异常。我已经以各种可能的方式“解释”了代码,但并没

我很难找出这段应该是基本的代码有什么问题。我想知道是否有人能帮我一把。任何想法都将非常感谢,我是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行中抛出不匹配异常。我已经以各种可能的方式“解释”了代码,但并没有成功地使其工作(当然,代码并不像这一条那么简单,但这一条什么都不做也不会执行…)


提前感谢您的时间,

如果您想比较所提供的示例代码所示的两个一维数组是否相等,则需要使用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

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

您不能直接比较两个数组的相等性如果
aux=array(0,“0,0”)
,通常,编写此代码的人应该知道数组的内容。在类似于
数组(0,“0,0”)
的情况下,将连接分隔符更改为已知不在任何元素中的某个分隔符是很容易的。对于大多数应用来说,这是非常好的(so+1),但是如果OP想要对字符串数组(锯齿数组的一个自然用例,其中每个数组可能来自于对不同的文本行应用
Split()
),他们应该意识到误报的危险。这是一个非常好的观点,用户应该意识到这些潜在的陷阱。我应该在回答中提到:)管道字符|是我的go to定界符