【VBA】Functionプロシージャとは|戻り値・構造・ワークシート関数の使い方

VBAには「Subプロシージャ」と並んで重要な仕組みとして Functionプロシージャ(関数) があります。
Functionプロシージャは 値を返すためのプロシージャ であり、計算やデータ取得など、結果を返すことが目的の処理で使われます。


スポンサーリンク

1. Functionプロシージャの役割

  • 計算結果や判定結果を返す
  • 他のプロシージャ(SubやFunction)から呼び出して使える
  • Excelのワークシート関数として利用できる場合もある
  • 再利用性の高い処理を関数化するのに最適

例:

  • 合計値の計算
  • 文字列の加工
  • 条件判定(真/偽)
  • ファイルの存在確認
  • 日付の計算

スポンサーリンク

2. Functionプロシージャの基本構造

Function 関数名(引数...) As データ型
    '処理
    関数名 = 値   '←ここで戻り値を返す
End Function

ポイント

  • As データ型 で返す値の型を指定
  • 関数名に値を代入することで戻り値を設定
  • 呼び出し側は「関数名()」で結果を取得できる
  • 他の言語とは違い Return キーワードはない

スポンサーリンク

3. Functionプロシージャの簡単な例(足し算)

Function AddValue(a As Long, b As Long) As Long
    AddValue = a + b
End Function

解説

  • 2つの数値(a, b)を足し算して返す関数
  • Function名「AddValue」に計算結果を代入して戻している
  • 他のプロシージャで利用可能

呼び出し側の例:

Sub TestFunction()
    Dim result As Long
    result = AddValue(5, 10)
    MsgBox result '結果:15
End Sub

スポンサーリンク

4. 戻り値があることが Sub との最大の違い

  • Sub → 処理するだけ(戻り値なし)
  • Function → 処理して結果を返す(戻り値あり)

この違いにより、Functionは「部品(パーツ)」としての再利用性が非常に高くなります。


スポンサーリンク

5. Excelワークシート関数として使える例

Functionプロシージャは「Public」で定義すれば、Excelシート上から利用できます。

Public Function GetTax(price As Double) As Double
    GetTax = price * 0.1
End Function

シート上で:

=GetTax(1000)

→ 100 が表示される

  • 「配列は返せない」「セルの書式変更はできない」「外部操作は不可」などの制約がある
  • ワークシート関数化は「標準モジュール」に記述した場合のみ

スポンサーリンク

6. Functionは「結果を返すためのプロシージャ」

実務では次のような場面で活躍します:

✔ 計算処理

金額、日付、文字列などの計算結果を返す

✔ 条件判定

例:

  • 数値が範囲内か?
  • ファイルが存在するか?
  • 入力値が正しい形式か?

✔ データ取得

例:

  • 指定セルの値を加工して返す
  • 設定ファイルから値を読み取る

スポンサーリンク

7. まとめ

  • Functionは「値を返すプロシージャ」で、Subとの最大の違いは戻り値の有無。
  • 戻り値は「関数名 = 値」で設定し、Return キーワードは存在しない。
  • Public にすればワークシート関数として利用可能。ただし標準モジュールに記述する必要がある。
  • 実務では計算・判定・データ取得などに活用でき、再利用性が高い。
  • 制約として、配列やセル書式変更などはワークシート関数では扱えない。

コメント

タイトルとURLをコピーしました