求助:WorksheetFunction类Vlookup属性运行时错误1004解决指导
VBA VLookup 运行时错误1004 解决指南
错误原因分析
出现"Unable to get the Vlookup Property of the worksheetFunction class run time error 1004"错误,核心原因分为两类:
WorksheetFunction.VLookup特性限制:当查找值在目标区域首列无匹配结果时,会直接抛出运行时错误,而非返回错误值。- 基础引用问题:
Me.cmb_Product.Value为空,或与查找区域首列(C列)的数据格式不匹配(如文本与数值类型冲突)。sh.Range("C:J")的首列未包含匹配值。sh对象未正确指向目标工作表,导致区域引用无效。
修复方案
方案1:改用Application.VLookup(推荐)
Application.VLookup在无匹配时返回#N/A而非报错,可通过判断结果处理:
Dim lookupResult As Variant lookupResult = Application.VLookup(Me.cmb_Product.Value, sh.Range("C:J"), 2, False) If Not IsError(lookupResult) Then Me.Txt_Rate.Value = lookupResult Else Me.Txt_Rate.Value = "" ' 可替换为"无匹配数据"等提示文本 End If
方案2:保留WorksheetFunction.VLookup并添加错误捕获
通过错误捕获语句处理无匹配的情况:
On Error Resume Next Me.Txt_Rate.Value = Application.WorksheetFunction.VLookup(Me.cmb_Product.Value, sh.Range("C:J"), 2, False) If Err.Number = 1004 Then Me.Txt_Rate.Value = "" ' 自定义错误处理逻辑 End If On Error GoTo 0 ' 恢复默认错误处理机制
额外检查要点
- 确认
sh已正确赋值,例如:Set sh = ThisWorkbook.Worksheets("目标工作表名称") - 核对查找值
Me.cmb_Product.Value与C列数据的格式一致性(如统一为文本或数值) - 确保
cmb_Product控件返回的是有效非空值
内容的提问来源于stack exchange,提问作者S M Sheheryar Ali
相关产品推荐
相关产品推荐

