首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >它说它“无法获得WorksheetFunction类的vlookup属性”

它说它“无法获得WorksheetFunction类的vlookup属性”
EN

Stack Overflow用户
提问于 2021-02-16 10:56:57
回答 1查看 854关注 0票数 0

我在excel VBA中面临一个问题。上面说是unable to get the vlookup property of the WorksheetFunction class

代码语言:javascript
运行
复制
Private Sub cmb_Product_Change()
    Dim sh As Worksheet
    Set sh = ThisWorkbook.Sheets("Product_Master")
    
    
    If Me.cmb_Product.Value = "" Or Me.cmb_Type.Value = "" Then Me.txt_Rate.Value = ""
    emphasized text[enter image description here][1]
       
    If Me.cmb_Type.Value = "Sale" Then
        Me.txt_Rate.Value = Application.WorksheetFunction.VLookup(Me.cmb_Product, sh.Range("B:D"), 2, 0)
    ElseIf Me.cmb_Type.Value = "Purchase" Then
        Me.txt_Rate.Value = Application.WorksheetFunction.VLookup(Me.cmb_Product, sh.Range("B:D"), 3, 0)
       
    End If



End Sub 

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-02-16 11:12:14

如果找不到查找值,这就是WorksheetFunction.VLookup的正常行为。

你有两种可能性:

(a)忽略错误

代码语言:javascript
运行
复制
Dim rate As Double  ' Or String, not sure what your data is.
On Error Resume Next
rate = WorksheetFunction.VLookup(Me.cmb_Product, sh.Range("B:D"), 2, false)
On Error Goto 0
Me.txt_Rate.Value = rate

如果找不到您的产品,费率将为空。

(b)改用Application.VLookup。这将不会引发运行时错误,但如果没有找到匹配,它将返回一个错误作为结果。请注意,您需要将结果声明为变量,否则将得到一个Type不匹配错误(错误13)。

代码语言:javascript
运行
复制
Dim rate As Variant
rate = Application.VLookup(Me.cmb_Product, sh.Range("B:D"), 2, false)
if not isError(rate) then Me.txt_Rate.Value = rate

更新:有关详细信息,请参阅本文:https://rubberduckvba.wordpress.com/2021/02/15/worksheetfunction-and-errors/

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66223069

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档