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) 

引发运行时错误:

无法获取WorksheetFunction类的VLookup属性

这个消息会更好一些,因为“VLookup函数无法在指定的查找范围内find指定的查找值”,或类似的东西。


你的查找失败的原因是一样的任何VLOOKUP可能会失败:validation你的lookup_value实际上存在于你的lookup_range 。 留意引导和/或尾随空格,以及“文本格式”列。 换句话说,假设你在查找失败时抛出运行时错误,这是一个数据问题,而不是代码问题。