簡體   English   中英

Excel VBA VLookup運行時錯誤'1004'

[英]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”。 請考慮以下測試:

  • 將單元格A2的值設為15。
  • 在宏下面運行

宏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

也請在這里查看: 如何使用WorksheetFunction.VLookup錯誤處理1004錯誤?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM