INDEX
Functionの概要
独自の関数を作成し、計算結果や値を返す VBAの予約語 | ||
Function 概要 Function ステートメントは、VBAで独自の関数を定義し、計算結果や処理結果を呼び出し元に返すために使用されます。 わかりやすく説明 処理を実行し、その結果を返す関数を作る命令。 |
||
|
Functionを使った基本的な関数
以下の例では、Function を使って 2 つの数値を足し算する関数を作成します。
Function AddNumbers(a As Double, b As Double) As Double
AddNumbers = a + b
End Function
Sub TestFunction()
MsgBox "合計: " & AddNumbers(10, 5)
End Sub
解説:
Function AddNumbers(a As Double, b As Double) As Double
: 2つの数値を受け取り、その合計を返す関数。AddNumbers = a + b
: 戻り値として合計を設定。
FunctionをExcelのワークシート関数として使用
Function を作成すると、Excelのセル内で使用できるカスタム関数(UDF)を作成できます。
Function SquareNumber(n As Double) As Double
SquareNumber = n * n
End Function
使い方:
- Excelのセルで
=SquareNumber(5)
と入力すると 25 が返る。
Functionの戻り値を条件で変更
以下の例では、引数の値によって異なる結果を返します。
Function CheckNumber(n As Integer) As String
If n > 0 Then
CheckNumber = "正の数"
ElseIf n < 0 Then
CheckNumber = "負の数"
Else
CheckNumber = "ゼロ"
End If
End Function
Sub TestCheckNumber()
MsgBox CheckNumber(-5) ' 「負の数」と表示
End Sub
解説:
- 0 より大きい → 「正の数」
- 0 より小さい → 「負の数」
- 0 の場合 → 「ゼロ」
Functionの引数をオプションにする
以下の例では、引数を省略可能(オプション)に設定しています。
Function GreetUser(Optional name As String = "ゲスト") As String
GreetUser = "こんにちは, " & name & " さん!"
End Function
Sub TestGreetUser()
MsgBox GreetUser() ' 「こんにちは, ゲスト さん!」と表示
MsgBox GreetUser("田中") ' 「こんにちは, 田中 さん!」と表示
End Sub
解説:
Optional name As String = "ゲスト"
により、引数を省略可能に設定。- 引数が指定されなかった場合、「ゲスト」がデフォルト値として使用される。
Excel VBAでのFunctionの活用
以下の例では、セルの範囲内の数値の合計を取得する関数を作成します。
Function SumRange(rng As Range) As Double
Dim cell As Range
Dim total As Double
total = 0
For Each cell In rng
If IsNumeric(cell.Value) Then
total = total + cell.Value
End If
Next cell
SumRange = total
End Function
使い方:
- Excelのセルで
=SumRange(A1:A10)
と入力すると、その範囲の合計を計算。
Functionの注意事項
- Function は必ず値を返す:
Sub
との違いを理解する。 - 戻り値の型に注意: 期待しない型が返らないよう、適切に指定する。
- ワークシート関数として利用可能: Excelのセルで UDF(ユーザー定義関数)として使える。
よくある質問
- Q: Function と Sub の違いは?
- A: Function は戻り値を持つが、Sub は値を返さない。
- Q: Function 内で MsgBox を使ってもよいですか?
- A: 可能だが、ワークシート関数として使う場合は避けたほうがよい。
- Q: Function の戻り値を複数にできますか?
- A: 戻り値は 1 つですが、配列やオブジェクトを返すことで複数の値を持たせることが可能です。
まとめ
- Function ステートメントは値を返す関数を作成するために使用。
- 引数を受け取り、処理を行い、その結果を返すことができる。
- Excelのユーザー定義関数(UDF)として利用可能。
- 戻り値の型を適切に指定し、条件分岐やループ処理を組み合わせると便利。