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でマクロを実行させる