我正在开发一个应用程序,它使用规范代码在另一个电子表格中查找这些代码,并将第二个电子表格中的供应商编号返回到第一个,并将它们列在与规范代码相同的列中。
ActiveCell.FormulaR1C1 = Application.WorksheetFunction.VLookup(specsec, [Vendorspec.xlsx!vid], 4)
在上面的代码行中:
代码行产生错误“运行时错误'1004':无法获取工作表函数类的vlookup属性”。
有人可以建议修复吗?
谢谢。
答案 0 :(得分:1)
您的查询失败了,错误消息完全是误导性的。
VBA无法找到WorksheetFunction.VLookup
成员,只是因为你的VLookup引发了错误。
您需要:
On Error GoTo
语句处理运行时错误或者
Application.VLookup
,它不会为您提供 IntelliSense ,但在查找失败时不会抛出运行时错误,而是返回“错误2042”并且您可以通过将查询包装在IsError
。在活动工作表的单元格42
中输入A1
。然后在立即窗格:
?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
。注意前导和/或尾随空格以及“文本格式”列。换句话说,假设您想要在查找失败时抛出运行时错误,这是一个数据问题,而不是代码问题。