繁体   English   中英

W10上的Excel 2013:不同工作表中的VBA Vlookup产生错误1004

[英]Excel 2013 on W10: VBA Vlookup in a different worksheet produces error 1004

我正在开发一个应用程序,该应用程序使用规范代码在另一个电子表格中查找这些代码,并将供应商编号从第二个电子表格返回到第一个电子表格,并将它们与规范代码列在同一列中。

ActiveCell.FormulaR1C1 = Application.WorksheetFunction.VLookup(specsec, [Vendorspec.xlsx!vid], 4)

在上面的代码行中:

  • specsec是规范代码,格式为XX XX XX.XX
  • vlookup目标文件的名称是“ VendorSpec.xlsx”。 在此工作表中,每个代码在第1列中都是一个唯一的条目,在第4列中是多个供应商编号的第一个。将来的代码将在各列中循环,返回当前代码的所有后续供应商ID。

代码行产生错误“运行时错误'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)

引发运行时错误:

无法获取WorksheetFunction类的VLookup属性

该消息最好用“ VLookup函数无法在指定的查找范围内找到指定的查找值”或类似的措词更好地表述。


查找失败的原因与任何VLOOKUP可能失败的原因相同:验证lookup_value实际上存在于lookup_range 注意前导和/或尾随空格,以及“文本格式”列。 换句话说,假设您在查找失败时引发运行时错误,那是数据问题,而不是代码问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM