VBA连接数组比较 – 错误1004出现

我有这些条目在行1到10和列A到D:

a 10 a 10 b 20 b 20 c 30 c 30 d 40 d 40 e 50 e 50 f 60 f 60 g 70 h 80 i 90 j 100 

使用VBA代码(我将在下面粘贴),我想要使用VBA数组,构buildA和B以及C和D的连接“虚拟列”。然后,我想要创build第三个数组,一个数组给我一个MATCH结果,每个数组元素使用A和B的连接,与C和D相同。(这里有一点:这是我想要构build的更复杂的原型。 )

它一直运行到数组中的第6个元素,但是除此之外,它给了我1004错误(在Watch窗口中的Empty之后的元素值)。

任何人都可以给我一些指针为什么?

这是(可能不雅)VBA代码:

 Sub concatarray() Dim count1 As Integer Dim count2 As Integer count1 = Application.CountA(Columns("A:A")) count2 = Application.CountA(Columns("C:C")) Dim Column1() As Variant Dim Column2() As Variant Dim virtColumn3() As Variant Dim Column4() As Variant Dim Column5() As Variant Dim virtColumn6() As Variant ReDim virtColumn3(1 To count1, 1 To 1) ReDim virtColumn6(1 To count2, 1 To 1) Column1 = Range("A1:A" & count1) Column2 = Range("B1:B" & count1) Column4 = Range("E1:E" & count2) Column5 = Range("F1:F" & count2) For i = 1 To count1 virtColumn3(i, 1) = Column1(i, 1) & Column2(i, 1) Next i For i = 1 To count2 virtColumn6(i, 1) = Column4(i, 1) & Column5(i, 1) Next i Dim virtColumn7() As Variant ReDim virtColumn7(1 To count1, 1 To 1) For i = 1 To count1 virtColumn7(i, 1) = WorksheetFunction.Match(virtColumn3(i, 1), virtColumn6, 0) Next i End Sub 

这几乎肯定是这个错误的片段:

  For i = 1 To count1 virtColumn7(i, 1) = WorksheetFunction.Match(virtColumn3(i, 1), virtColumn6, 0) Next i 

提前致谢。

如果找不到匹配, WorksheetFunction.Match()将引发错误。

您可以使用Application.Match()版本,而不是捕获该错误,它会返回一个错误:

 Dim v 'variant For i = 1 To count1 v = Application.Match(virtColumn3(i, 1), virtColumn6, 0) If Not IsError(v) Then virtColumn7(i, 1) = v Next i 

它崩溃,因为Matchfunction找不到该项目。

您可以使用On Error Resume Next ,然后检查Err的值以查看是否find匹配项。

另外,您不需要Dim Column1() As Variant 。 一个变体可以是一个数组,所以Dim Column1 As Variant清晰了。