【Excel VBA】VLookUP関数

Excel VBA講座 開講中!

今回は、Excel VBAでのVLookUP関数についてご紹介します。

エクセルをよく使われる方なら既にご存知かもしれませんが、VLookUP関数とは、指定した検索値を、指定範囲の一番左の列から検索し、一番左の列から数えて指定した数だけ右に移動した列の値を取得してくれる関数です。

※本ページはプロモーションが含まれています

スポンサーリンク
スポンサーリンク

VLookUP関数

Excel VBAにおけるVLookUP関数は下記のように記述します。

VLookup(検索値, 範囲, 列番号, 検索方法)

「検索方法」は、検索値と完全に一致する値だけを検索するか、その近似値を含めて検索するかを、論理値(近似値を含めて検索 = TRUE または省略、完全一致の値を検索 = FALSE)で指定します。

下記のサンプル1では、A列から「テスト3」という文字列を探し、A列から数えて2列右のB列の、「テスト3」を見つけた行と同じ行の値を取得し、変数strに代入してメッセージボックスに表示しています。

・サンプル1

Sub VLook1()

Dim str As String

str = Application.WorksheetFunction.VLookup(“テスト3”, Range(“A:B”), 2, False)

MsgBox str

End Sub

サンプル1 処理結果

サンプル1 処理結果

しかし、上記サンプルの検索値「テスト3」を、シート上のA列に存在しない文字、例えば「テスト」に変更した場合、エラーが発生してしまい、処理が途中で止まってしまいます。

実行時エラー

実行時エラー

そこで、Excel VBAのVLookUP関数では検索値が見つからない場合のエラー処理を行う必要があります。

下記のサンプル2は、エラー処理を実装した例です。

・サンプル2

Sub VLook2()

Dim str As String

On Error Resume Next

str = Application.WorksheetFunction.VLookup(“テスト3”, Range(“A:B”), 2, False)

If Err.Number <> 0 Then

str = “検索値が見つかりません”

End If

On Error GoTo 0

MsgBox str

End Sub

On Error Resume Next

は、これ以降エラーが発生しても、エラーが発生した次の行から処理を続行する、というプログラムです。

Application.WorksheetFunction.VLookup

の部分は先ほどご紹介したVLookUP関数ですが、ここで検索値が見つからずにエラーが発生した場合、

If Err.Number <> 0 Then

でエラーが発生した場合と発生しなかった場合の分岐処理を行います。
エラーが発生しなかった場合はErr.Numberは0となるため、
0でない場合はエラーとみなし、Ifステートメント内の処理を実行します。

Ifステートメント内ではエラーが発生した場合、変数strには「検索値が見つかりません」という文字列を代入して表示するようにしています。

On Error GoTo 0

で、On Error Resume Nextを無効にします。
(On Error GoTo 0がないと、On Error Resume Nextが機能し続けます)

タイトルとURLをコピーしました