Excel2003でマクロ(VBA)を書くための開発環境の準備

起動

とりあえずExcel VBAを書くにはVBE(Visual Basic Editor)ってのを使えば良いらしい。
Excelを開いてメニューを「ツール→マクロ→Visual Basic Editor」と辿るか、Alt+F11で開ける。

環境設定

最初にいくつか環境設定をしておく。
VBEのメニューからツール→オプションを開くと以下のようなダイアログが出る。

まず「編集」タブで「変数の宣言を強制する」にチェック。
これは新しくモジュール(プログラムの表示単位?)を作ったときに、先頭にOption Explicitと自動挿入してくれる(だけ)。
既に作成済みのモジュールには効果が無いので注意。
これが付いていないと宣言していない変数も適当に使えるため、スペルミスなどした場合もその場で教えてくれなくなる。

次に「エディタの設定」タブでコードの表示色を変更。
とりあえずキーワード(PublicとかEndとかTrueとかのこと)だけ青くしてみた。
これ文字の太さ変えられればいいのに。

新規作成

新規作成というメニューは無い。
メニューの「挿入→標準モジュール」で、先頭にOption Explicitと書かれたウィンドウが出てくる。

ウィンドウの上に(General)とか(Declarations)とか書いてあるけど、
右側の(Declaration)はモジュール内のセクション一覧をまとめてあるっぽい。
例えばプロシージャ(関数)を定義すると、(Declarations)の下にそのプロシージャ名が追加される。
(General)はいったいなんなんでしょうかね。僕もこう、楽しみに考えていたりします。

Hello, World!

とりあえず以下のようにコードを記述。

Option Explicit

Sub PrintMessage()
    MsgBox ("Hello, Warp World!")
End Sub

カーソルがプロシージャ内にある状態*1でF5を押すか、メニューの「実行→Sub/ユーザー フォームの実行」を選択。
Excelの方に画面が切り替わってダイアログが表示され、OKを押せばVBEに戻る。
MsgBoxはJavascriptで言うalertみたいなもので、
Javascriptで言うところのconsole.logは、Debug.Printを使う。
Ctrl+gかメニューの「表示→イミディエイト ウィンドウ」でイミディエイトウィンドウを開き、
MsgBoxをDebug.Printに書き換えて再度実行。
今度はイミディエイトウィンドウに実行結果が出力される。

*1:カーソルがプロシージャ外にある場合は、実行するプロシージャを選択するためのダイアログが出る