MENU

【VBA】Callステートメントの使い方と活用例を徹底解説!

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を実行すると、SubProcedure1SubProcedure2が順に呼び出されます。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は省略可能なため、シンプルにしたい場合は省略しても構いません。自分のコードスタイルに合った使い方を選んでみてください!

この記事を書いた人

めんどくさがりでズボラ。
某自動車メーカーで、VBAやRPAを用いた業務効率化を行っております。

目次