TOP > VBA基本講座 > [引数渡し]

○関数の引数
=関数名(引数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

○引数の種類
変数のほかに、値(数値)や式があります。これはアドレスがないので
値渡しにしかなりません。またユーザー定義型、配列を渡すことも
できます。


TOP