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

Sub プロシージャを別のプロシージャから呼び出すには、プロシージャの名前を入力し、必要な引数の値を指定します。 Call ステートメントは必要ありませんが、使用する場合は、引数をかっこで囲む必要があります。

Sub プロシージャを使用して他のプロシージャを整理することにより、容易に理解してデバッグできるようになります。 次の例では、Sub プロシージャ Main が引数に 56 の値を渡し、Sub プロシージャ MultiBeep を呼び出します。

MultiBeep の実行後、コントロールは Main を返し、MainSub プロシージャ 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 のサポートおよびフィードバックを参照してください。