【VBA】VLookupでエラーが出る時の対処法

2023年1月13日

【VBA】VLookupでエラーが出る時の対処法

VBAからVLookup関数を使用すると画像のエラーが出ることがあります。

これはVLookupにマッチするデータがないときに起こります。Excelシート上で使う時はN/Aとなるのですが、VBAだとエラーになってしまいます。

今回はこのエラーが出る時の対処法を紹介します。

VLookupでエラーが出る具体例

Excelシート
Sub VLookupError()
    
    Dim price As String
    
    'Kがないのでエラーになる
    price = WorksheetFunction.VLookup("K", Range("A2:B8"), 2, False)
    
    Debug.Print price
End Sub

例えば上のようにExcelにデータがあるときに、このプログラムを実行するとエラーが起こります。

これはVLookupで"K"を探しているのに、シート上にKがないためです。

VLookupでエラーが出る時の対処法

Sub VLookupNoneError()

    On Error Resume Next 'エラーを無視

    Dim price As String

    price = WorksheetFunction.VLookup("K", Range("A2:B8"), 2, False) 'エラーを出す
    If Err.Number > 0 Then price = "エラー" 'エラーがある場合

    On Error GoTo 0 'エラーを無視の終了
    Debug.Print price
End Sub

エラーを回避するためには、On Error Resume Nextで一旦エラーを無視します。

    If Err.Number > 0 Then price = "エラー" 'エラーがある場合

そしてこの部分でエラーとなっていた場合の処理をします。

Err.Numberはエラー番号を返すプロパティで正常ならば0のため、0より大きい=エラーがあったというわけです。

On Error GoTo 0 'エラーを無視の終了

最後にOn Error GoTo 0を書いて再度エラーが生じるように戻します。

これを入れておかないと、この後もエラーを無視したままになります。VLookup関数以外のエラーはきちんと発生するようにしてバグ防止に努めましょう。

VLookup関数は直接エラーを回避する方法がないため、このように一度エラーを無視して対処しましょう。

VBAが難しいと感じたら
プロにお任せして代わりに作ってもらってはいかがでしょう?
VBAの作成依頼はこちらから

《VBA中級者向けの本》
VBA上級者を目指したい人にはパーフェクトExcel VBA一択です。

created by Rinker
技術評論社
¥3,608 (2023/02/07 15:31:32時点 Amazon調べ-詳細)

他の「VBA」の記事はこちらからどうぞ

VBA

Posted by やろまい