プロシージャの開始と終了について

今回の目標

  • プロシージャの開始文言とルールを知る
  • プロシージャの終了文言を知る

説明

プロシージャの開始文言(プロシージャ名について)

プログラムの開始時には開始文言があり、「Sub ファンクション名」で始めなければなりません。

Sub プロシージャ名

「プロシージャ名」は下記の場合以外は、好きなアルファベットや日本語、_(半角アンダーバー)も使えます。

  • 予約語
    ExcelVBAで使用するため、文法などのため予約している単語のことです。言い換えると「この単語は文法のため、使用しないでね」という単語です。
    VBAエディタでは予約語が青色に表示されることが多いです。

    予約語一例

    予約語用途・役割
    Dim変数の宣言
    Setオブジェクト型変数への代入
    Subサブプロシージャの定義
    Functionファンクションプロシージャの定義
    Endプロシージャや構文の終了
    If条件分岐の開始
    For反復処理の開始
    NextForの制御
    Do反復処理の開始
    LoopDoの制御

    補足ですが、プロシージャ名「Dim」はエラーとなりますが、プロシージャ名「Dimo」や「Dio」はOKです。

  • プロシージャ名の1文字目に「_(半角アンダーバー)」
    _を先頭に付けることはできません。ただし、2文字目以降であれば使用することが出来ます。
    OKなプロシージャ名:File_Close
    NGなプロシージャ名:_FileClose

  • _(半角アンダーバー)以外の記号
    _以外の記号、例えば+や-、*は使用することはできません。

  • 既に使用しているプロシージャ名
    初心者の方はあまり気にしなくてよいです。これは、慣れたら読み直してください。
    「Sub ●~End Sub」が1つのプログラムとなりますが、End Sub の次の行以降に「Sub プロシージャ名」と入力すると新たにプロシージャを作成することができます。その時、既に作成しているプロシージャ名と同じプロシージャ名で作成することができません。

ファンクション名として問題ない例を挙げます。

  • main1

  • プログラムスタート

  • Sample_Program

次に、ファンクション名として問題がある例を挙げます。

  • _main
    最初がアンダーバーのため、問題があります。

  • End
    予約語のため、問題があります。

予約語と呼ばれるいくつかの語や使用してはいけない記号をプロシージャ名にしようとすると、下記のエラーが発生します。

  • 予約後を使用してエラー

    プロシージャ名のエラー画像
  • 使用できない文字を使用してエラー

    プロシージャ名のエラー画像

サブプロシージャ名の使用できない文字が選択された状態になり、その行は赤字になっていますね。
予約語は10種類以上あり、すべて覚えようとしても初心者の方にはハードルが高いと思います。
上記画像のエラーが表示されたら、予約語か使用不可の文字だから名前を変える必要がある程度の認識で大丈夫でしょう。

プロシージャの終了文言

先がプログラムの開始のための文言でしたが、逆に終了のための文言もあります。
「End Sub」と入力することでプログラム終了を表します。

End Sub

先の開始時の文言は覚えてらっしゃいますか?「Sub Function名」です。
下記画像は正しく入力したときの例です。
プロシージャ名のエラー画像
この状態で、キーボードの「Enter」キーを入力してください。
すると、下記の画像のように「End Sub」が自動的に追記されます。 プロシージャ名のエラー画像
これで最短のプログラムの完成です。ただ、処理を書いていないため、プログラムを動作させても(動作開始方法は次章にて説明)セルなど何も変化はありません。

プロシージャとは

「Sub プロシージャ名」から始まり「End Sub」で終わる1つの塊のことです。 プログラム初心者の方は、まだ深く理解しなくても良いと思います。

プログラム言語習得者の方なら、「プロシージャとは関数型言語の関数にあたる」と言えば掴みやすいでしょうか。
C言語やC++では、main関数からプログラムが開始されますが、ExcelVBAでは開始する関数(プロシージャ)の名前は自由です。では「どの関数からスタートするのか」という疑問が湧くと思いますが、それは次章にて説明します。

確認テスト

次の問いに答えなさい。

  1. ファンクション名として正しい選択肢を全て挙げよ。

    1. MainFunc

    2. End

    3. えんど

    4. _Sample

    5. Main-Sample

    【解説】

    下記の通りです。

    1. MainFunc
      問題ありません。

    2. End
      予約後のため、エラーが発生します。
      エラー画像

    3. えんど
      問題ありません。

    4. _Sample
      1文字目に、_(アンダーバー)があるため、エラーが発生します。
      エラー画像
       _(アンダーバー)を使用する場合は、2文字目以降でなければなりません。
       仮に「S_ample」ならエラーが発生しません。

    5. Main-Sample
      _(アンダーバー)以外の記号である-(マイナス)を使用しているため、エラーが発生します。※選択肢Dのようにプロシージャ名の先頭に_(アンダーバー)を置くとエラーになります。
      エラー画像

関連リンク

ページの先頭へ