宣言 SubプロシージャとFunctionプロシージャの呼び出し

※より実装に近く表示させる為、コードの改行を避けています。スマホ等で閲覧される際は向きを変えてご覧ください。

※実装するバージョンによってはバージョンアップの仕様により動作しないコードもあります。実装には動作確認の上ご使用下さい。


'Sub プロシージャを別のプロシージャから呼び出すには、プロシージャ名を入力し、必要な引数の値を指定します。
'Call ステートメントは必要ありませんが、Call ステートメントを記述する場合は、引数をかっこで囲まなければなりません。
'
'●例
'Sub プロシージャ Main は Sub プロシージャ MultiBeep を呼び出し、
'引数として値 56 を引き渡します。MultiBeep が実行されると、
'制御は Main に戻り、Main は、Sub プロシージャ Message を呼び出します。Message は、メッセージ ボックスを表示します。
'ユーザーが [OK] をクリックすると、制御は Main に戻り、Main は終了します。

Sub Main()
MultiBeep 56
Message
End Sub

Sub MultiBeep(numbeeps)
For counter = 1 To numbeeps
Beep
Next counter
End Sub

Sub Message()
MsgBox "休憩の時間です。"
End Sub

'●複数の引数を持つ Sub プロシージャの呼び出し
'次のコード例は、複数の引数を持つ Sub プロシージャを呼び出す方法として、2 つの方法を示しています。
'2 度目に HouseCalc を呼び出すときは、Call ステートメントを使用するので、引数をかっこで囲む必要があります。

Sub Main()
HouseCalc 99800, 43100
Call HouseCalc(380950, 49500)
End Sub

Sub HouseCalc(price As Single, wage As Single)
If 2.5 * wage <= 0.8 * price Then
MsgBox "この家は購入不可能です。"
Else
MsgBox "この家は購入可能です。"
End If
End Sub

'Function プロシージャ呼び出し時のかっこの使い方
'
'●関数の戻り値を使用するには、次のコード例のように、式の中で関数を変数に代入して、引数をかっこで囲みます。
'answer3 = MsgBox("現在の給与に満足していますか ?", 4, "質問 3")
'●関数の戻り値が不要の場合は、Sub プロシージャを呼び出すときと同じ方法で関数を呼び出すことができます。
'次のコード例のように、かっこを省略して引数リストを指定し、関数を変数に代入しないように記述します。
'MsgBox "作業が完了しました。", 0, "作業ボックス"
'注意 このコード例で、引数をかっこで囲むと、構文エラーになります。
'●名前付き引数の引き渡し
'Sub プロシージャおよび Function プロシージャのステートメントは、名前付き引数を使って、
'呼び出すプロシージャに値を引き渡すことができます。名前付き引数を使う場合、構文で決まっている記述順序に関係なく、
'任意の順序で指定できます。名前付き引数に値を代入するには、引数名、コロンと等号 (:=)、引数に代入する値の順で記述します。
'●例 名前付き引数を使って MsgBox 関数を呼び出します。戻り値は無視します。
'MsgBox Title:="作業ボックス", Prompt:="作業が完了しました。"
'●例 名前付き引数を使って MsgBox 関数を呼び出します。戻り値は、変数 answer3 に代入されます。
'answer3 = MsgBox(Title:="質問 3", Prompt:="現在の給与に満足していますか ?", Buttons:=4)
'

 

2000年01月01日|[VBサンプルコード]:[宣言]