下标超出范围内的错误数组中的for循环vba

制作参考文件中的数据副本并使副本具有唯一性,然后将这些唯一文本置于新表格的列标题循环中。 任何人都知道为什么即时通讯“在wsDB”行中得到错误“下标超出范围”?

Sub uniqueyes() Dim wsRef As Worksheet Dim wsDB As Worksheet Set wsRef = Worksheets("reference1") Set wsDB = Worksheets("Sheet1") With wsRef .Range("F1:F60").AdvancedFilter Action:=xlFilterCopy, CopyToRange:=.Range("I1"), unique:=True Dim arrValues As Variant arrValues = .Range("I2", .Range("I" & .Rows.Count).End(xlUp)) End With For i = 1 To ActiveSheet.Cells(Rows.Count, 4).End(xlUp).Row If Cells(i, 4) = "Title" Then For j = 1 To (UBound(arrValues)) Step 1 With wsDB .Range(.Cells(i, j * 4 + 2), .Cells(i, j * 4 + 4)).Value = arrValues(j) End With Next j End If Next i End Sub 

当你加载数组中的值时,像这样: arrValues = .Range("I2", .Range("I" & .Rows.Count).End(xlUp))它变成了多维的。 (行和列)

在这一行中,您只是提供了一个维(行)作为j和缺less其他维(列)。 因此,错误。

.Range(.Cells(i, j * 4 + 2), .Cells(i, j * 4 + 4)).Value = arrValues(j)