VBAでプロシージャ(Sub)を呼び出す方法として、
Call ステートメント を使う方法と 省略(直接呼び出し) があります。
どちらも正しく理解しておくと、既存コードの読みやすさ向上や保守がしやすくなります。
ここでは、Callの基本、書き方の違い、注意点までまとめて解説します。
目次
1. Callステートメントとは
Call ステートメントは、Subプロシージャを明示的に呼び出すための命令 です。
古いVBAコードではよく見られますが、現在では
Call は省略されることが多い という特徴があります。
2. Callを使ったプロシージャ呼び出し
▼ 基本形
Sub Main()
Call ShowMessage
End Sub
Sub ShowMessage()
MsgBox "こんにちは"
End Sub
Call を使うと、明示的に「呼び出し」をしていることが分かりやすくなります。
3. Callを使う場合のルール
Call を使うときは、引数を必ずカッコで括る 必要があります。
▼ 引数ありの例
Sub Main()
Call ShowMessage("田中")
End Sub
Sub ShowMessage(name As String)
MsgBox "こんにちは、" & name & "さん"
End Sub
Call を使う場合はカッコ必須
Call を省略する場合はカッコ禁止
という点が重要です。
4. Callを省略した呼び出し(一般的な書き方)
現在のVBAでは、Call を使わずにプロシージャ名だけ書くのが主流です。
▼ 引数なし
Sub Main()
ShowMessage
End Sub
▼ 引数あり
Sub Main()
ShowMessage "田中"
End Sub
Call なしの場合は カッコを付けない のがルールです。
5. Call あり・なしの比較まとめ
| 書き方 | 引数の書き方 | 現代的か? |
|---|---|---|
| Call ShowMessage(“田中”) | カッコ必要 | やや古い |
| ShowMessage “田中” | カッコ不要 | 一般的 / 推奨 |
6. Callを使うメリット・デメリット
■ メリット
- 「呼び出している」ことが見た目で明確
- 古いコードの統一性を保てる
■ デメリット
- カッコのルールが面倒
- 現代のVBAでは冗長とされがち
- 初心者には読みづらい
7. 実務でのおすすめルール
実務では、以下のルールを採用することを推奨します。
- Call は基本使わない
- Sub呼び出しはカッコを付けない
- Function 呼び出しはカッコを付ける(戻り値扱うため)
特に今後新規でプロシージャを設計する場合は、
Call を使わない方がコードがシンプルで保守性も高くなります。
8. まとめ
今回は Call ステートメントの使い方と省略表記の違い を解説しました。
- Call は Sub を呼び出すための構文
- Call を使うと引数はカッコが必要
- Call を省略する場合はカッコを付けてはいけない
- 現代のVBAでは Call を使わないのが一般的
コメント