Functionプロシージャは、値を返しながら処理をまとめることができる便利な仕組みです。
この記事では、Function の書き方を「構文 → 実例 → 使用例」の流れでわかりやすく解説します。
目次
1. Function の基本構文
まずは最もシンプルな構文
Function 関数名(引数1 As 型, 引数2 As 型, ...) As 戻り値の型
'処理
関数名 = 戻り値
End Function
● 基本構文のポイント
- 引数はカンマ区切りで複数指定可能
- 引数の渡し方は
ByVal(値渡し)が推奨 - 戻り値は「関数名に値を代入する」ことでセット
- 戻り値の型は必ず明示すると保守性が高い
2. 最もシンプルな例:数値の加算関数
まずは小さく理解できる例
Function AddValue(ByVal a As Long, ByVal b As Long) As Long
AddValue = a + b
End Function
● この関数の動き
- a と b を受け取り
- a + b の結果を返す
▼ 呼び出し側の使い方
Sub Test()
MsgBox AddValue(3, 5) '→ 8が表示される
End Sub
3. Optionalを活用した柔軟な関数
引数を省略可能にすると、関数の使い勝手が大幅に向上します。
Function CalcTax(ByVal price As Long, Optional ByVal rate As Double = 0.1) As Long
CalcTax = price * (1 + rate)
End Function
▼ 呼び出し例
Sub Test()
MsgBox CalcTax(2000) '税込2200(10%)
MsgBox CalcTax(2000, 0.08) '税込2160(8%)
End Sub
Optional を使うことで「デフォルト動作」と「カスタム動作」の両方に対応できます。
4. 戻り値の型を工夫する例(文字列を返す)
Function は数値だけでなく、文字列や日付などあらゆる型を返せます。
▼ メッセージを作る関数
Function MakeMessage(ByVal name As String) As String
MakeMessage = "こんにちは、" & name & "さん!"
End Function
▼ 使用例
Sub Test()
MsgBox MakeMessage("田中")
End Sub
「処理とメッセージ組み立て」を分離できるため、コードの再利用性が大きく向上します。
5. Boolean を返して判定に使う例(実務で頻出)
条件判定を Function に切り出すと、読みやすさ・保守性が段違いに良くなります。
▼ 数値が正かどうか判定する
Function IsPositive(ByVal num As Long) As Boolean
IsPositive = (num > 0)
End Function
▼ 使用例
Sub Test()
If IsPositive(10) Then
MsgBox "正の数です"
Else
MsgBox "0以下です"
End If
End Sub
判定ロジックを Function にすると、複数の場所で使い回せます。
6. 日付や処理を書き換える実用例
▼ 今日が平日かどうか判定する関数
Function IsWeekday(ByVal dt As Date) As Boolean
IsWeekday = (Weekday(dt, vbMonday) <= 5)
End Function
▼ 使用例
Sub Test()
If IsWeekday(Date) Then
MsgBox "今日は平日です"
Else
MsgBox "今日は休日です"
End If
End Sub
こうした小さな判定関数を持っておくと、大きな処理でも読みやすくなります。
7. Function の使いどころのまとめ
- 計算処理 → 結果を返したい時
- 文字列の組み立て → 複数箇所で共通化できる
- 条件判定 → Boolean を返すとロジックが整理される
- 可変パラメータ → Optional 引数で柔軟に
Function を使うことで、コードの明確化・再利用性・バグ防止につながります。
コメント