忍者ブログ
バイオインフォマティックス技術者試験、情報処理試験など、IT系の試験を基礎から勉強します。また、Javaなどプログラミングを勉強します。

【VBAスタンダード対策】マクロの絶対終端「End Sub」の構造を攻略!

VBAのプロシージャは、Sub 名前 で始まり、必ず End Sub で終わるという一対の構造(ペア)で成立します。この「終わり」を示す記述が正確でないと、プログラムの範囲が確定できず、構造エラーとなります。

1. 問題:プロシージャを完結させる正確な記述

【 問題 】 以下のSubプロシージャにおいて、プロシージャの範囲を適切に終了させ、一つの構造として完結させるために ( A ) に入る正確な記述はどれでしょうか?

Sub Sample()
    MsgBox "処理を実行します"
( A )

① EndSub   ② Exit Sub   ③ End Sub   ④ End

2. 正解:プロシージャの終端フォーマットに関する正解

正解: ③ End Sub

3. 解説:なぜ「End Sub」という構造が必要なのか?

VBAにおいて、Sub(開始)に対応する終端は、End(キーワード)+ 半角スペース + Sub(キーワード)という特定の単語の組み合わせでなければなりません。この物理的な「閉じ」があることで、初めて一つの独立したプログラムとして認識されます。

[ End Sub の構造的絶対ルール ]
一対の原則:Sub で開始したプロシージャは、必ず End Sub で閉じなければなりません。
スペースの重要性:EndSub のようにスペースを抜かすと、コンパイラは終端として認識できず、エラーになります。
メモリの解放:この行に到達した瞬間に、そのプロシージャ内だけで使われていた変数(ローカル変数)はすべて破棄されます。

[ 他の選択肢との構造的な違い ]
Exit Sub:途中で抜ける「動作」であり、プロシージャという建物の「壁(終端)」の役割は持っていません。
End:プログラム全体を強制停止する命令であり、プロシージャを閉じるための構文ではありません。

1. ここが試験に出る!: VBAスタンダード試験では、コードの穴埋め形式でこの「End Sub」を正確に記述させることがあります。特に、Function プロシージャ(End Function)との混同や、単語間のスペースの有無は、構文の正確性を問うスタンダードレベルでは非常に重要なチェックポイントです。
2. エンジニアの視点: VBAでは明示的に「End(終わり) Sub(サブプロシージャ)」と言葉で記述します。この「出口」を明確に定義することが、予期せぬ動作を防ぎ、論理的な構造を持った「いけいけ」なマクロを作成する大前提となります。


4. まとめ

「Sub 名前」で開けたら、最後は「End Sub」で締める。この一対のフォーマットを正確に守ることが、VBAにおける「構造」の正解です。減数分裂が細胞分裂のサイクルを正しく完遂するように、VBAも End Sub という終止符によって、一つの処理を安全に終わらせ、次のステップへと確実に繋いでいくのです。


PR