【VBA言語】パラメータ指定のルール
パラメータとは
VBA(Visual Basic for Applications)では、関数やサブルーチンに値を渡すために「パラメータ」や「引数」という概念を使用します。パラメータは、関数やサブルーチンを実行する際に必要な情報を提供するためのものです。関数を定義する際に、パラメータを指定しておき、その値を実行時に指定します。
パラメータの種類
VBAで使用されるパラメータには主に2つの種類があります。引数として渡す方法と、戻り値として返す方法です。
- 引数として渡すパラメータ
- 戻り値として返すパラメータ
引数として渡す場合、関数に与える値がパラメータに代入され、計算などが行われます。戻り値として返す場合、関数内で計算結果を返すために、返り値を指定します。
引数の渡し方(ByVal, ByRef)
VBAでは、引数を渡す際に「ByVal」と「ByRef」という2つの方法を使用できます。
- ByVal(値渡し):
ByValでは、引数の値が関数に渡されますが、関数内でその値が変更されても呼び出し元には影響を与えません。以下に例を示します。
Sub SampleByVal(ByVal x As Integer) x = x + 10 End Sub
上記の例では、xの値が変更されても、呼び出し元で渡されたxの値は変わりません。
- ByRef(参照渡し):
ByRefでは、引数が関数内で変更されると、その変更が呼び出し元にも反映されます。以下に例を示します。
Sub SampleByRef(ByRef x As Integer) x = x + 10 End Sub
この場合、関数内でxの値が変更され、呼び出し元のxの値も変わります。
可変長引数
VBAでは、関数やサブルーチンに可変長引数を指定することができます。可変長引数を使うことで、渡す引数の数を変更することができます。次のように定義します。
Sub ExampleVarArgs(ParamArray args() As Variant)
Dim i As Integer
For i = LBound(args) To UBound(args)
MsgBox args(i)
Next i
End Sub
上記の例では、ParamArray
を使って可変長引数を受け取っています。この関数は、渡された引数の数に応じて動作します。
デフォルト引数
VBAでは、引数にデフォルト値を設定することができます。デフォルト値を設定することで、引数を省略した場合にその値が自動的に使用されます。以下はデフォルト値を設定した例です。
Sub ExampleDefaultValue(Optional x As Integer = 10)
MsgBox x
End Sub
上記の例では、引数xが省略された場合、デフォルトで10が使われます。
引数の型
VBAでは、引数の型を指定することができます。これにより、関数が受け入れる引数のデータ型を制限することができます。例えば、次のように引数の型を指定できます。
Sub ExampleType(x As Integer, y As Double)
MsgBox x + y
End Sub
この例では、xは整数型、yは実数型として定義されています。引数に適切な型を指定することで、予期しないエラーを防ぐことができます。
関数とサブルーチンの違い
関数(Function)とサブルーチン(Sub)の違いは、戻り値の有無です。関数は値を返すことができる一方、サブルーチンは値を返しません。
- 関数: 値を返す関数は、
Function
を使用して定義します。 - サブルーチン: 値を返さない手続きは、
Sub
を使用して定義します。
関数の例:
Function AddNumbers(x As Integer, y As Integer) As Integer
AddNumbers = x + y
End Function
サブルーチンの例:
Sub ShowMessage(msg As String)
MsgBox msg
End Sub
関数は値を返しますが、サブルーチンは処理を実行するだけです。