![](/img/trans.png)
[英]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.