簡體   English   中英

W10上的Excel 2013:不同工作表中的VBA Vlookup產生錯誤1004

[英]Excel 2013 on W10: VBA Vlookup in a different worksheet produces error 1004

我正在開發一個應用程序,該應用程序使用規范代碼在另一個電子表格中查找這些代碼,並將供應商編號從第二個電子表格返回到第一個電子表格,並將它們與規范代碼列在同一列中。

ActiveCell.FormulaR1C1 = Application.WorksheetFunction.VLookup(specsec, [Vendorspec.xlsx!vid], 4)

在上面的代碼行中:

  • specsec是規范代碼,格式為XX XX XX.XX
  • vlookup目標文件的名稱是“ VendorSpec.xlsx”。 在此工作表中,每個代碼在第1列中都是一個唯一的條目,在第4列中是多個供應商編號的第一個。將來的代碼將在各列中循環,返回當前代碼的所有后續供應商ID。

代碼行產生錯誤“運行時錯誤'1004':無法獲取工作表函數類的vlookup屬性”。

任何人都可以提出修復建議嗎?

謝謝。

您的查找完全失敗,並且錯誤消息完全令人誤解。

這並不是說VBA找不到WorksheetFunction.VLookup成員,而是因為您的VLookup引發了錯誤。

您需要:

  • 使用On Error GoTo語句處理該運行時錯誤

要么

  • 使用后期版本的Application.VLookup ,它沒有給您IntelliSense ,但不是在查找失敗時引發運行時錯誤,而是返回“錯誤2042”,並且您可以通過將其包裝來測試查找是否失敗在IsError

在活動工作表的單元格A1中鍵入42 然后在即時窗格中

?iserror(application.VLookup(42,Range("A:B"),1,false))

返回False

?iserror(application.VLookup(43,Range("A:B"),1,false))

返回True

?application.WorksheetFunction.VLookup(42,Range("A:B"),1,false)

返回42

?application.WorksheetFunction.VLookup(43,Range("A:B"),1,false)

引發運行時錯誤:

無法獲取WorksheetFunction類的VLookup屬性

該消息最好用“ VLookup函數無法在指定的查找范圍內找到指定的查找值”或類似的措詞更好地表述。


查找失敗的原因與任何VLOOKUP可能失敗的原因相同:驗證lookup_value實際上存在於lookup_range 注意前導和/或尾隨空格,以及“文本格式”列。 換句話說,假設您在查找失敗時引發運行時錯誤,那是數據問題,而不是代碼問題。

暫無
暫無

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

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