【VBA言語】パラメータ指定のルール

【VBA言語】パラメータ指定のルール

パラメータとは

パラメータの種類

引数の渡し方(ByVal, ByRef)

可変長引数

デフォルト引数

引数の型

関数とサブルーチンの違い

パラメータとは

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

関数は値を返しますが、サブルーチンは処理を実行するだけです。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です