ワークシート関数をVBAで使う

Pocket

VBAではVBAの関数は当然使えますが、通常のシート関数も使えます。
しかし、その使う関数が、VBAの関数なのか、通常のシート関数なのか区別するために
通常のシート関数の前には必ず
WorksheetFunction.

と宣言します。そうすることで、シート関数をVBAでも使えます。

経理を効率化するうえで、VBAで使うシート関数はVLookup関数位です。

VBAでVLookup関数を使えば、VLookup関数の使い方で解説したことをVBAに組み込んで、
わざわざ列を挿入して関数を打ち込んでドラッグしてという作業を省くことができます。

コードを次のようになります。
Sub 変換()
Dim a As Integer
a = 1
Worksheets(“Sheet1”).Activate
Do Until Cells(a, 1).Value = “”
Worksheets(“Sheet2”).Cells(a + 1, 1).Value = Cells(a, 3).Value
Worksheets(“Sheet2”).Cells(a + 1, 2).Value = 166
Worksheets(“Sheet2”).Cells(a + 1, 3).Value = _
  WorksheetFunction.VLookup(Cells(a, 1).Value, Worksheets(“Sheet3”).Range(“得意先”), 3, False)

Worksheets(“Sheet2”).Cells(a + 1, 4).Value = 511
Worksheets(“Sheet2”).Cells(a + 1, 5).Value = Cells(a, 9).Value
Worksheets(“Sheet2”).Cells(a + 1, 6).Value = Cells(a, 2).Value
a = a + 1
Loop

End Sub

Cells(a,1)はSheet1のA列です。

検索範囲ですが、シート関数の場合は名前だけでしたが、VBAの場合は
Worksheets(“Sheet3”).Range(“得意先”)
というように、シート名も記載します。VBAで名前の定義を参照するときはこういうコードの
書き方をします。

シート関数をVBAでに取り込むことで、またひと手間減らすことができます。