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