| ○関数の引数 =関数名(引数1,引数2,...)のように、()の中に引数で (具体的なデータ)を指定します。 引数の分離はカンマ(,)を使い、範囲の指定はA1:A10のようにコロン(:) 文字列を直接引数にする場合は、半角ダブルコーテーション("文字列")を使い ます。 ○関数プロシージャ(Function) Subプロシージャ(サブルーチン)とは違い、値を返すプロシージャ。 Sub 分から秒に() Dim 値 As Long 値 = InputBox("分の値をを入力して下さい") '変数に代入 t = 秒数に計算(値) '関数呼出し MsgBox t ’60倍された値を表示 End Sub Function 秒数に計算(a) As Long 秒数に計算 = a * 60 '戻り値 End Function ○Subプロシージャへの引数渡し プロシージャへ引数を渡すには「参照渡し」と「値渡し」があります。 『参照渡し』「ByRef」Call by Reference 変数のアドレスを渡すので、呼出側の変数の値も変化します。 これは「★Subプロシージャでも値を戻す」と同じ意味になる。 呼び出し側の値が変更されることに、注意して使います。 <参照渡しによる呼出> Sub 分から秒に() Dim 値 As Long 値 = InputBox("分の値をを入力して下さい") ’変数に代入 秒数に計算 値 ’変数「値」のアドレスを「秒数に計算」に渡す MsgBox 値 & "秒" ’60倍された値を表示 End Sub Sub 秒数に計算(A As Long) ’★参照呼び出しが標準なので「ByRef」省略 A = A * 60 ’渡されたアドレスの変数値を60倍する End Sub 『値渡し』「ByVal」Call by Value 変数のコピーが渡されます。渡された変数の値を変更しても、元の変数は変 わりません。 <値渡しによる呼出> Sub 分から秒に() Dim 値 As Long 値 = InputBox("分の値を入力して下さい") 秒数に計算 値 ’変数「値」のコピーを「秒数に計算」に渡す MsgBox 値 & "秒" ’表示されるのは、入力されたままの「値」 End Sub Sub 秒数に計算(ByVal A As Long) ’「ByVal」は値渡し A = A * 60 MsgBox A ’「値」の60倍を表示 End Sub ○引数の種類 変数のほかに、値(数値)や式があります。これはアドレスがないので 値渡しにしかなりません。またユーザー定義型、配列を渡すことも できます。 |