VBAでは、複数のプロシージャや関数を効率的に管理・呼び出すために、Call
ステートメントを使用します。
この記事では、Call
ステートメントの基本的な使い方から応用例まで、初心者にもわかりやすく解説します。
Callステートメントとは
Call
ステートメントは、VBAで別のプロシージャや関数を呼び出すために使用する命令文です。
複雑な処理を整理し、可読性の高いコードを作成するのに役立ちます。
Callステートメントの基本的な構文
Call
ステートメントの基本構文は以下の通りです。
Call プロシージャ名(引数)
引数がない場合は、括弧も不要です。
Call プロシージャ名
Callステートメントの使用例
以下に、Call
ステートメントを使用した具体的な例を示します。
Sub MainProcedure()
Call SubProcedure1
Call SubProcedure2(10)
End Sub
Sub SubProcedure1()
MsgBox "SubProcedure1が呼び出されました"
End Sub
Sub SubProcedure2(val As Long)
MsgBox "SubProcedure2が呼び出されました。引数の値は " & val
End Sub
上記の例では、MainProcedure
を実行すると、SubProcedure1
とSubProcedure2
が順に呼び出されます。SubProcedure2
には引数として10
が渡されます。
Callステートメントは省略可能
実は、Call
ステートメントは省略可能です。プロシージャや関数を呼び出す際、必ずしもCallを記述する必要はありません。ただし、Call
を記述しない場合は、プロシージャに渡す引数を括弧で囲む必要はありません。
前述のコードは下記コードと同じ処理内容です。
Sub MainProcedure()
SubProcedure1
SubProcedure2 10
End Sub
Call
を使わなくても動作しますが、Call
を使用することでコードの読みやすさが向上する場合があります。
Callのメリット
明示的な呼び出し
Call
を使うことで、「この行はプロシージャや関数を呼び出している」という意図が明確になります。特に複雑なコードや他人が作成したコードを読む際に役立ちます。
引数がない場合の使い方
引数がないプロシージャを呼び出す場合、Call
を使うと呼び出しがより明示的になります。
Call SubProcedureWithoutArgs
Callを使わない場合の注意点
Call
を使わずにプロシージャや関数を呼び出す場合、引数がある場合には括弧を省略できます。
' Callあり
Call SubProcedure(10)
' Callなし
SubProcedure 10
FunctionとCallの関係
Function
(関数)の戻り値を取得する場合には、通常Call
は使用せず、直接戻り値を変数に代入します。
Dim result As Long
result = FunctionProcedure(5)
Call
を使うと関数の戻り値は無視されてしまうため、Function
を呼び出す際には基本的にCall
は使用しません。
まとめ
VBAで複数のプロシージャや関数を呼び出す際に使うCall
ステートメントは、コードの可読性や整理に役立ちます。ただし、Call
は省略可能なため、シンプルにしたい場合は省略しても構いません。自分のコードスタイルに合った使い方を選んでみてください!