スポンサーリンク

2016年12月10日土曜日

VLookup関数をVBA(マクロ)で使い検索する(見つからなければエラー処理を行う)

Excel2013で、VLookup関数をVBA(マクロ)で使い検索し、結果をセルに表示します。

下画像のようなシートを作成しました。

1:検索するコードを入力します。
2:VLookup関数を使い検索を開始します。
3:検索元の製品一覧表です。
4:検索結果の「製品名」と「単価」を表示します。

コードを入力しないで[検索]ボタンをクリックすると、下のエラーメッセージを表示します。

ボタンのクリックイベント内に下のVBAコードを入力します。

Option Explicit

Private Sub CommandButton1_Click()
    Dim s As Variant

    If Range("C2") = "" Then
        Beep
        MsgBox "検索するコードを入力してください。"
        Exit Sub
    End If

    s = WorksheetFunction.VLookup(Range("C2"), Range("E3:G13"), 2, False)
    Range("C8") = s

    s = WorksheetFunction.VLookup(Range("C2"), Range("E3:G13"), 3, False)
    Range("C9") = s

End Sub

このようにVlookup関数をVBAで使うには、WorksheetFunction.VLookupのように使用します。

VLookup(Range("C2"), Range("E3:G13"), 2, False) : コードを製品一覧表から検索し、見つかれば2列目(製品名)のデータを返します。

VLookup(Range("C2"), Range("E3:G13"), 3, False) : コードを製品一覧表から検索し、見つかれば3列目(単価)のデータを返します。

■エラー処理を行う

もし入力したコードが見つからない場合、「実行時エラー’1004’ WorksheetFunctionクラスのVLookupプロパティを取得できません。」とエラーが発生します。

On Error Gotoを使い、このエラーに対処したVBAコードです。

Private Sub CommandButton1_Click()
    Dim s As Variant
 
    If Range("C2") = "" Then
        Beep
        MsgBox "検索するコードを入力してください。"
        Exit Sub
    End If
 
On Error GoTo ErrSub
    s = WorksheetFunction.VLookup(Range("C2"), Range("E3:G13"), 2, False)
    Range("C8") = s
 
    s = WorksheetFunction.VLookup(Range("C2"), Range("E3:G13"), 3, False)
    Range("C9") = s
 
    Exit Sub
 
ErrSub:
    Beep
    MsgBox "入力されたコードは見つかりませんでした。"

End Sub

実行すると下画像のようにメッセージが表示されます。

■マクロで実行するには

マクロで実行するには、標準モジュール内に入力します。
Rangeなどのセル指定には、Sheetsでシート名を指定します。

Sub MyVLookup()
    Dim s As Variant
  
    If Sheets("Sheet1").Range("C2") = "" Then
        Beep
        MsgBox "検索するコードを入力してください。"
        Exit Sub
    End If
  
On Error GoTo ErrSub
    With Sheets("Sheet1")
        s = WorksheetFunction.VLookup(.Range("C2"), .Range("E3:G13"), 2, False)
        Range("C8") = s
  
        s = WorksheetFunction.VLookup(.Range("C2"), .Range("E3:G13"), 3, False)
        Range("C9") = s
    End With
    Exit Sub
  
ErrSub:
    Beep
    MsgBox "入力されたコードは見つかりませんでした。"
End Sub

1.作成するマクロを実行するには、リボンの[開発]~[マクロ]をクリックします。
2.マクロダイアログボックスから、上で作成した「MyVLookup」を選択します。
3.[実行]ボタンをクリックします。 これで検索できます。

関連する記事
VLOOKUP関数を使って自動入力する
番号・姓・名の表からVLOOKUP関数を使い、番号から名前を作成する
VLOOKUP関数でN/Aエラーを表示させない方法
VBA入門
ボタンをクリックするとVBAでマクロを実行させる