「Subプロシージャ」内にマクロコードを入力してみよう。ここでは、リスト2のようなマクロコードを入力する。
Sub 住所と名前() Range("A1").Value = "愛媛県松山市道後" Range("A2").Value = "薬師寺国安" End Sub Sub 確認() MsgBox Range("A2").Value & "さんは" & Range("A1") & "にお住まいですね。" End Sub
マクロコードを入力する場合には、入力支援機能が利用できる。例えば、「R」と入力し[Ctrl]+[スペース]キーを押すと、「R」で始まるメソッドやプロパティなどの候補の一覧が表示され、その中から目的ものを選択できる。また、「MsgBox」のように関数やメソッド名を入力して[スペース]キーを押すと、引数の情報など、ヒントが表示される。
これらの入力支援機能は、実際にマクロコードを書いてみると実感できるので、その時に確認してみてほしい。実際に自分で書いて確認することが重要だ。
ではリスト1のマクロを実行してみよう。その前に、各「Sub プロシージャ」を関連付けるボタンを配置しておく。ボタンの配置については、第1回目を参照してほしい。
図12のように2つのボタン([挿入]→[図形]から選択)を配置し、各ボタンを選択して、名前を入力する。マウスの右クリックで表示される[マクロの登録]から、表示される「住所と名前」「確認」のマクロをそれぞれのボタンに指定する。ボタンを配置してマクロを関連付ける方法の詳細については、連載第1回を参照してほしい。
[住所と名前]ボタンをクリックすると、図13のように表示され、[確認]ボタンをクリックすると、図14のようにダイアログボックスが表示される。
最後に、コメントの入力について簡単に触れておこう。「コメント」とは、マクロコードの中に書く「これはどんな処理を行っているマクロなのか」を、誰が見ても分かるようにしておく「メモ」のようなものだ。
マクロの中にコメントを書く場合は先頭に「'」を追加して記述する。図15のように記述する。
コメントを入力しておくと、複雑な処理の場合、数年後にマクロの修正が必要になった場合など、忘れていた記憶を取り戻すのに大変重要な役割を果たす。また、担当者が変わり、マクロを引き継ぐ場合にも、コメントが役に立つので、必ずコメントは記入しておくよう心掛けよう。そういう筆者自身はあまりコメントを記入しない性格なので、後々になって冷汗をかいている……。
またマクロコードの中で、今回はこのマクロは不要だが後々のために残しておきたい場合などにも、マクロの先頭に「'」を追加して「コメントアウト」しておく。
数百行のマクロに、いちいち「'」を手で追加していたのではたまらない、そこで、VBEのメニューから[表示]→[ツールバー]→[編集]と選択して[ツールバー]を表示させる。表示された[ツールバー]の[コメント ブロック]をクリックすると、選択していたマクロコードが一括でコメントアウトされる(図16)。
コメントを外したい場合は、外したいマクロコードを選択し、[ツールバー]の[コメント ブロック]の右横にある[非コメント ブロック]をクリックするとコメントアウトが解除される。
今回はこれで終わりだ。今回はプログラムに関する専門用語も出てきたが、これらは最低限、覚えておかねばならない用語だ。用語の意味をある程度理解しておかないと、マクロコードを書くことが難しくなるので、よく読んで理解して、というより、覚えておいてほしい。
次回は、Excel VBAの基礎知識の続編で、変数やデータ型について解説する予定だ。お楽しみに。
【2016/7/7】Windows 10、Excel 2016に対応しました。
PROJECT KySS 薬師寺 国安(やくしじ くにやす)
1950年生まれ。フリーVBプログラマ。高級婦人服メーカーの事務職に在職中、趣味でVBやActiveXに取り組み、記事を執筆。2003年よりフリー。.NETやRIAに関する執筆多数。Windowsストアアプリも多数公開中(約270本)。
Microsoft MVP for Development Platforms - Client App Dev (Oct 2003-Sep 2012)。
Microsoft MVP for Development Platforms - Windows Phone Development(Oct 2012-Sep 2013)。
Microsoft MVP for Development Platforms - Client Development(Oct 2013-Sep 2014)。
PROJECT KySSは、1997年に薬師寺聖と結成したコラボレーション・ユニット
Copyright © ITmedia, Inc. All Rights Reserved.