W10上的Excel 2013:不同的工作表中的VBA Vlookup产生错误1004
我正在开发一个应用程序,它使用规范代码在另一个电子表格中查找这些代码,并将第二个电子表格中的供应商编号返回到第一个,并将其与规范代码列在同一列中。
ActiveCell.FormulaR1C1 = Application.WorksheetFunction.VLookup(specsec, [Vendorspec.xlsx!vid], 4)
在上面的代码行中:
- specsec是XX XX XX.XX格式的规范代码
- vlookup目标文件的名称是“VendorSpec.xlsx”。 在此工作表中,每个代码都是第1列中的唯一条目,第4列中有多个供应商编号中的第一个。将来的代码将循环访问列,返回当前代码的所有后续供应商ID。
代码行产生错误“运行时错误”1004“:无法获取工作表函数类的vlookup属性”。
任何人都可以build议一个修复
谢谢。
你的查询只是失败,错误信息是完全误导。
这不是说VBA找不到WorksheetFunction.VLookup
成员,只是你的VLookup提出了一个错误。
您需要:
- 用
On Error GoTo
语句处理该运行时错误
要么
- 使用后期绑定的版本
Application.VLookup
,它不会给你IntelliSense ,但是当查找失败时不会抛出一个运行时错误,它将返回“Error 2042”,你可以通过包装来testing查找失败在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函数无法在指定的查找范围内find指定的查找值”,或类似的东西。
你的查找失败的原因是一样的任何VLOOKUP可能会失败:validation你的lookup_value
实际上存在于你的lookup_range
。 留意引导和/或尾随空格,以及“文本格式”列。 换句话说,假设你想在查找失败时抛出运行时错误,这是一个数据问题,而不是代码问题。