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にすればワークシート関数として利用可能。ただし標準モジュールに記述する必要がある。- 実務では計算・判定・データ取得などに活用でき、再利用性が高い。
- 制約として、配列やセル書式変更などはワークシート関数では扱えない。
コメント