我想在我的宏中连续使用两个VLookUps。宏计算A列和C列中的ID,在另一个表中搜索ID描述(相同的表和范围从F列到M - > F = ID,H = ID描述)并继续此搜索,直到达到计数并将它们插入B和D列。
不幸的是,我得到了一个
运行时错误1004
使用第二个VLookUp时。第一个工作正常,它与第一个完全一样,我只是指不同的细胞。
我想要实现的图片参考:
有谁知道导致这个问题的原因是什么?
Dim i As Integer
Dim shA As Worksheet
Set shA = Worksheets(Format(Date, "dd.mm.yyyy"))
With shA
For i = 4 To .Range("A4", .Range("A4").End(xlDown)).Rows.Count + 3
.Cells(i, 2) = .Application.WorksheetFunction.VLookup(.Cells(i, 1), .Range("F:M"), 3, False)
Next i
For i = 4 To .Range("C4", .Range("C4").End(xlDown)).Rows.Count + 3
.Cells(i, 4) = .Application.WorksheetFunction.VLookup(.Cells(i, 3), .Range("F:M"), 3, False)
Next i
End With
答案 0 :(得分:3)
尝试将Integer
替换为Long
,然后重试。
在VBA中Integer
是
从 -2 ^ 15到2 ^ 15-1 或
从 -32768到32767
因此,如果您在Excel中使用它并且它引用超出此范围的数字,则会出现错误。通常,您还有其他一些错误。试试这个并确保选择了正确的ActiveSheet
(我已经轻松完成了,您可以稍后更改):
Public Sub TestMe()
Dim i As Long
Dim shA As Worksheet
Set shA = ActiveSheet
With shA
For i = 4 To .Range("A4", .Range("A4").End(xlDown)).Rows.Count + 3
.Cells(i, 2) = Application.VLookup(.Cells(i, 1), .Range("F:M"), 3, False)
Next i
For i = 4 To .Range("C4", .Range("C4").End(xlDown)).Rows.Count + 3
.Cells(i, 4) = Application.VLookup(.Cells(i, 3), .Range("F:M"), 3, False)
Next i
End With
End Sub
因此,一般来说:
On Error Resume Next
,因为它有点难度。With Worksheets("someName")
时,请确保每次点.
时,该孩子都是with-Parent
的真正孩子。在您的情况下,.Application
不是Worksheets()
Integer
,Long