子どもの”プログラミング的思考"をグングン伸ばす本

ExcelVBAの解説

プロシージャ

Excelでは、プログラムのひとまとまりを「プロシージャ」と呼びます。

  1. プロシージャは、どこに書くのか?
  2. プロシージャは、モジュールに記述します。

    モジュールにはいくつかの種類があります。最初に覚えてほしいのは、標準モジュールです。

    初学者の方は、プロシージャは、標準モジュールに書く とまずは覚えてください。

    標準モジュールの作成方法

    標準モジュールは、あらかじめ用意されていません。つまり、自分で作成しなければならないのです。

    Visual Basic Editorを開いたら、「挿入」→ 「標準モジュール」 で作成できます。

    作成直後は、標準モジュールが開かれた状態になります。つまり、すぐにプログラムを書くことができます。

    まとめ

  3. プロシージャは、どのように書くのか?
  4. プロシージャは、Sub という言葉から書き始めます。End Sub で終わります。こんな感じです。

    Sub ShowMyName()
        MsgBox "僕の名前はTatsudaiです"
    End Sub
    

    Sub の後に続く言葉が、プロシージャ名です。この例で説明すると、ShowMyNameがプロシージャ名です。

    プロシージャ名の直後には半角のカッコがあります。上の例では、かっこの中には何もありませんが、引数というものを設定することもできます。ここらへんについては、いずれ解説します。

    ちなみに、プロシージャ名は、プログラマー(つまり、あなたです)が、命名します。上の例の ShowMyName は、僕が命名しました。

    なお、Sub とプロシージャ名の間とか、End Subの間のスペースは、半角スペースです。間違って全角スペースを入れても、Visual Basic Editorが直してくれるはずですが、それでも、スペースは半角と覚えておきましょう。

    プロシージャ名について

    そのプロシージャの処理内容を要約した名前を付けるようにしてください。こういう癖をつけておくと、あとで役に立ちます。

    なお、プロシージャ名は、日本語でも問題なく動作します。これはVBAの大きな特徴です。(つまり、他のほとんどのプログラミング言語はそういう訳にはいかないということです。)

    プロシージャ名には、次のようなルールがあります。このルールを守らないとプログラムは動作しません。

    ●数字で始めてはいけない。言い換えると、アルファベット、もしくは_で始めること

    ●記号は使えない。ただし_(アンダーバー)だけはOK

    ●VBAで特別な意味を持っている言葉は使えない

    勉強を始めたばかりの時は、3つ目のルールがややこしく感じるでしょう。だって、どんな言葉が使用禁止なのか、知っているわけがないのですから。 でも気にする必要はありません。エラーになった時に直せばいいだけです。気楽に行きましょう。

    まとめ

  5. プロシージャは、どうやって動かす(実行する)のか?
  6. プロシージャは作成しただけでは、実行されません。では、どうやって実行するのでしょうか。

    方法は2つあります。1つは、別のプロシージャから呼び出してもらう方法、もう1つは、エクセルに呼び出してもらう方法です。

    別のプロシージャから呼び出してもらう方法

    これが基本です。別のプロシージャの中で呼び出してもらうためにプロシージャ名を付けるのです。

    ただし、今ここで説明するのは難しいです。もう少し先に覚えることがあるからです。あとでちゃんと必ず紹介するので、今は少し我慢してください。 ここでは、もう一つの方法を覚えておきましょう。

    エクセルに呼び出してもらう方法

    Excel には、「マクロの実行」という機能があります。これを使うと、任意のプロシージャを実行することができます。

    操作方法は、いたって簡単。「開発」タブを選択し、「マクロ」をクリックします。

    表示されたダイアログボックスには、作成したプロシージャの一覧が表示されます。(まだ1つしかありませんが)

    実行したいプロシージャを選択したら、「実行」ボタンをクリックします。これでプロシージャが実行されます。

    メッセージボックスが表示されました。このプロシージャは、メッセージボックスを表示するという内容だったんですね。

    もうひとつ、エクセルから呼び出す方法を紹介します。エクセル上にボタンを配置しておき、ボタンをクリックしたときに実行します。

    「開発」タブを選択し、「挿入」から「ボタン(フォームコントロール)」をクリックします。

    シート上の任意の位置で、クリックまたはドラッグすると、「マクロの登録」ダイアログボックスが自動的に表示されます。

    ShowMyName を選択したら、「OK」をクリックします。

    シート上にボタンが表示されているはずです。ボタンの文字列が「ボタン 1」では芸がないので変更しましょう。

    ボタンの中をクリックすると、カーソルが表示されます。任意の文字列を入力してください。ここでは「実行」という文字列にしました。

    任意のセルを選択すると、ボタンが確定されます。以降は、ボタンをクリックすることによって、プロシージャ ShowMyName が実行されます。

    まとめ

  7. プロシージャは、いくつまで作成できるのか?
  8. プロシージャは標準モジュールに書くことは説明しました。標準モジュールには、原則いくつでもプロシージャを記述することができます。数の制限はありません。

    当面は、必要なプロシージャをどんどんと書いていってください。

    下の画像は、複数のプロシージャを書いた時の例です。コードの内容は、まだ気にしないでください。勉強していくと分かるようになりますから。

    まとめ

  9. 作成したプロシージャは、どのエクセルファイルでも実行できるのか?
  10. 答えは、NOです。標準モジュールに書いたプロシージャは、このエクセルファイルでしか実行できません。

    Visual Basic Editor のプロジェクトエクスプローラをみると、VBAProjectの下層に位置付けられているのが分かります。

    VBAProject は、エクセルファイル(上の画像では、sample.xlsm)に属しているので、別のエクセルファイルでは使用できません。

    まとめ