Sub プロシージャと Function プロシージャの呼び出し
Sub プロシージャを別のプロシージャから呼び出すには、プロシージャの名前を入力し、必要な引数の値を指定します。 Call ステートメントは必要ありませんが、使用する場合は、引数をかっこで囲む必要があります。
Sub プロシージャを使用して他のプロシージャを整理することにより、容易に理解してデバッグできるようになります。 次の例では、Sub プロシージャ Main
が引数に 56 の値を渡し、Sub プロシージャ MultiBeep
を呼び出します。
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 "Time to take a break!"
End Sub
注:
複数のプラットフォーム間で Office エクスペリエンスを拡張するソリューションを開発することに関心がありますか? 新しい Office アドイン モデルを参照してください。 Office アドインは、VSTO アドインやソリューションに比べてフットプリントが小さく、HTML5、JavaScript、CSS3、XML などのほぼすべてのWeb プログラミング テクノロジーを使用して構築できます。
複数の引数を持つ Sub プロシージャの呼び出し
次の例では、複数の引数を持つ Sub プロシージャを呼び出す 2 種類の方法を示します。 2 回目の呼び出しでは、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 "You cannot afford this house."
Else
MsgBox "This house is affordable."
End If
End Sub
Function プロシージャを呼び出すときにかっこを使用する
関数の戻り値を使用するには、次の例で示すように、関数を変数に代入し、引数をかっこで囲みます。
Answer3 = MsgBox("Are you happy with your salary?", 4, "Question 3")
関数の戻り値が必要ない場合は、Sub プロシージャと同じ方法で関数を呼び出すことができます。 次の例で示すように、かっこを省略し、引数を列記して、関数を変数には代入しません。
MsgBox "Task Completed!", 0, "Task Box"
前の例でかっこを使用した場合は、ステートメントで構文エラーが発生します。
名前付き引数を渡す
Sub または Function プロシージャのステートメントでは、名前付き引数を使用して、呼び出されるプロシージャに値を渡すことができます。 名前付き引数は任意の順序で列記できます。 名前付き引数は、引数の名前、コロン、等号 (:=)、引数に割り当てる値の順番に記述します。
次の例では、名前付き引数を使用して MsgBox 関数を呼び出しています。戻り値はありません。
MsgBox Title:="Task Box", Prompt:="Task Completed!"
次の例では、名前付き引数を使用して MsgBox 関数を呼び出しています。 戻り値を変数に代入しています。
answer3 = MsgBox(Title:="Question 3", _
Prompt:="Are you happy with your salary?", Buttons:=4)
関連項目
サポートとフィードバック
Office VBA またはこの説明書に関するご質問やフィードバックがありますか? サポートの受け方およびフィードバックをお寄せいただく方法のガイダンスについては、Office VBA のサポートおよびフィードバックを参照してください。