このサイトの記事内では「アフィリエイト広告」などの広告を掲載している場合があります。
消費者庁が問題としている「誇大な宣伝や表現」とならないよう配慮しコンテンツを制作しておりますのでご安心ください。
問題のある表現が見つかりましたらお問い合わせよりご一報いただけますと幸いです。

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

2023年1月13日

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

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

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

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

VBAが難しいと感じたら
VBAのプロに代わりに作ってもらうのはいかがでしょうか?
ココナラで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

Posted by やろまい