2

私はExcelにデータテーブルを持っています。それは次と同じです:

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

キー(列A)で値(列B)を取得するVBA関数を作成しました例:=getValue(A1)

この例では、 と入力=getValue(A3)すると、関数は #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

VLOOKUPでVBAで#N/A値を取得する方法は? お手伝いありがとうございます!

4

1 に答える 1

8

以下のようにエラーを処理できます。

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
于 2012-07-19T08:09:55.453 に答える