[英]Excel VBA - Custom Function; #VALUE error; VLOOKUP on different worksheet
[英]Excel 2013 on W10: VBA Vlookup in a different worksheet produces error 1004
我正在開發一個應用程序,該應用程序使用規范代碼在另一個電子表格中查找這些代碼,並將供應商編號從第二個電子表格返回到第一個電子表格,並將它們與規范代碼列在同一列中。
ActiveCell.FormulaR1C1 = Application.WorksheetFunction.VLookup(specsec, [Vendorspec.xlsx!vid], 4)
在上面的代碼行中:
代碼行產生錯誤“運行時錯誤'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)
引發運行時錯誤:
該消息最好用“ VLookup函數無法在指定的查找范圍內找到指定的查找值”或類似的措詞更好地表述。
查找失敗的原因與任何VLOOKUP可能失敗的原因相同:驗證lookup_value
實際上存在於lookup_range
。 注意前導和/或尾隨空格,以及“文本格式”列。 換句話說,假設您想在查找失敗時引發運行時錯誤,那是數據問題,而不是代碼問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.