[英]Excel VBA VLookup Run-time error '1004'
我要合並兩張紙。 在Tabelle 3
中已經有一些數據。 因此,我定義了Next Free Row (NFR)
並希望將Tabelle 5
數據添加到Tabelle 3
的下一個空閑行。 因此,我編寫了以下VLookup函數。
Sub ConsolidateData()
Dim lastrow As Long
Dim NFR As Long
lastrow = Tabelle5.Range("A" & Rows.Count).End(xlUp).Row
NFR = Tabelle3.Range("A" & Rows.Count).End(xlUp).Offset(-3).Row
Set myrange = Tabelle5.UsedRange
For i = 4 To lastrow
Tabelle3.Cells(NFR + i, 1) = Application.WorksheetFunction.VLookup(Tabelle5.Cells(i, 1), myrange, 1, False)
Tabelle3.Cells(NFR + i, 2) = Application.WorksheetFunction.VLookup(Tabelle5.Cells(i, 1), myrange, 2, False)
Next i
End Sub
即使,我已經在另一本工作簿中使用了此代碼,在該工作簿中它可以正常運行,但在這里不起作用。 相反,此行發生Run-time error '1004'
:
Tabelle3.Cells(NFR + i, 1) = Application.WorksheetFunction.VLookup(Tabelle5.Cells(i, 1), myrange, 1, False)
有人看到錯誤或可以告訴我我編碼錯誤嗎?
似乎Vlookup
找不到您要尋找的值,因此引發錯誤。 如果找不到值, Application.WorksheetFunction.VLookup
將返回錯誤“ 1004”。 請考慮以下測試:
宏1:
Sub test1()
check = Application.WorksheetFunction.VLookup(15, Range("A1:A5"), 1, False)
Debug.Print check
End Sub
宏2:
Sub test2()
check = Application.WorksheetFunction.VLookup(1, Range("A1:A5"), 1, False)
Debug.Print check
End Sub
如您所見,第二個引發錯誤。 要解決該問題,您應該將WorksheetFunction.VLoookup
更改為Application.VLookup
並實現錯誤檢查:
Sub test2()
If IsError(Application.VLookup(1, Range("A1:A5"), 1, False)) = False Then
check = Application.VLookup(1, Range("A1:A5"), 1, False)
End If
Debug.Print check
End Sub
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.