前回はVLOOKUP関数についてでしたが、今回はVLOOKUP機能をVBAで使うサンプルを書きます。サンプルコードを実行すると、←のようにダイレクトにVLOOKUPの結果が挿入されます。
Sub VlookupSample()
Dim xName As Variant
Dim xZoku As Variant
With ActiveSheet
xName = Application.VLookup(.Cells(5, 5), .Range("A2:C8"), 2, False)
xZoku = Application.VLookup(.Cells(5, 5), .Range("A2:C8"), 3, False)
If IsError(xName) Then xName = "該当なし"
.Cells(5, 6) = xName
If IsError(xZoku) Then xZoku = "該当なし"
.Cells(5, 7) = xZoku
End With
End Sub
ポイントは"Application.VLookup"の部分で、これは"Application.WorkSheetFunction.VLookup"からWorkSheetFunctionオブジェクトを省略した記述です。
ただし、省略せずにフルに記述すると、検索結果が見つからない場合、ステートメントそのものがエラーとなり、『実行時エラー '1004' :WorkSheetFunction クラスの VLookup プロパティを取得できません。』が発生して処理が停止してしまいます。
従って、ここではエラーを回避するために、意図的にWorkSheetFunctionオブジェクトを省略しています。
[補足] Excel 95では、ワークシート関数がApplication オブジェクトに関連付けされていたので、"Application.WorkSheetFunction.VLookup"とした場合、正しい値が返る場合もエラーになります。↑の方法は、旧バージョンのExcel との互換性を保持するための仕様を利用しています。
参考になりました。有難うございました。
返信削除