【问题标题】:How to VLOOKUP get #N/A value in VBA?如何 VLOOKUP 在 VBA 中获取 #N/A 值?
【发布时间】:2012-07-18 08:03:41
【问题描述】:

我在 Excel 中有一个数据表,与:

    A       B
-------------
1. aaa     11
2. bbb     22
3. ccc     #N/A
4. ddd     44

我写了一个 VBA 函数来按键获取值(col B)(在 col A 中) 例如:=getValue(A1)

在这个例子中,如果我输入=getValue(A3),函数是 throw #VALUE!错误。我正在调试并在 VLOOKUP 函数中看到错误。这是我的代码:

Public Function getValue(ByVal key As Variant)

    'get value of the cell at column B which has value 'key' at column A on same row
    column2GetValue = 2
    useClosestMatch = False

    'error here if colum2GetValue contain #N/A
    found = Application.WorksheetFunction.VLookup( _
        key, _
        Worksheets(SHEET_CACHE_NAME).Range("A:B"), _
        column2GetValue, _
        useClosestMatch _
    )

    getValue = found
End Function

如何在 VBA 中 VLOOKUP 获取 #N/A 值? 感谢您的帮助!

【问题讨论】:

    标签: excel error-handling vlookup vba


    【解决方案1】:

    您可以如下处理错误。

    虽然我建议你考虑使用更通用的Find 代替Application.VLOOKUP

    Sub TestMe()
    Dim vTest As Variant
    vTest = Application.VLookup("TesT", Range("A1:B10"), 2, False)
    If IsError(vTest) Then
    MsgBox "Not found", vbCritical
    Else
    MsgBox "value is " & vTest
    End If
    End Sub
    

    【讨论】:

    • 哦,我在函数中尝试了 IsError,但是当column2GetValue 包含#N/A 时,函数崩溃然后在Application.WorksheetFunction.VLookup 行退出;该函数无法转到下面的IsError
    • 删除WorksheetFunction
    猜你喜欢
    • 2011-05-10
    • 1970-01-01
    • 1970-01-01
    • 2020-12-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-24
    • 1970-01-01
    相关资源
    最近更新 更多