2010/05/01

VBAでVLOOKUPを使う

前回は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 との互換性を保持するための仕様を利用しています。

1 件のコメント:

  1. 参考になりました。有難うございました。

    返信削除