Excel VBA 入門 その5 : プログラムの書き方について - 便利なツールで事務処理をスピーディーに!

Excel VBA 入門 その5 : プログラムの書き方について

StockSnap / Pixabay


皆さまこんにちは!

このサイトの管理者のHide(ヒデ)と申します。

今回のブログからいよいよ実際にプログラムを入力していきますが、初めにプログラムの書き方をご説明してから画面に文字を表示するという簡単なプログラムを作成してみたいと思います。

前回のブログでVBEにモジュールを1つ挿入してプログラムを入力する場所(コードウィンドウ)を作成していますので、ここからスタートしましょう。

まだ準備ができていない方は前回のブログをご覧頂ください。

前回のブログはこちら

では早速始めてみましょう。

スポンサーリンク
Simplicityのレクタングル広告(大)

1. モジュールの名前をわかりやすく変更する

前回のブログでは、新規に挿入したモジュールの名前が「Module1」となっていました。このブログでは画面に表示するプログラムを作成しますので、このモジュールではどのようなプログラムを記述しているかわかりやすいように名前を「Mo01_Display」に変更します。この名前は自由に決められますが1番目のモジュールで画面表示に関連したモジュールという意味で付けました。

1-1. 下図の赤枠部(1番)のようにVBEの画面左側のプロジェクトウィンドウの標準モジュールにある「Module1」の部分をマウスで左クリックして選択します。ここで赤枠部(2番)のオブジェクト名の部分を変更します。

1-2. 下図の赤枠部(3番)のようにオブジェクト名を「Mo01_Display」に変更してEnterキーを押します。すると赤枠部(4番)のようにプロジェクトウィンドウのモジュール名も「Mo01_Display」に変わったことがわかります。

2. プログラムの開始位置と終了位置を記述する

Excel VBAではプログラムの開始位置と終了位置を明確にする必要があります。ではどのようなルールで記述する見てみましょう。

2-1.まず、「Sub」と書いて「半角スペース」を入れた後に「自分が付けたい任意のプログラムの名前」、続けてスペースを入れずに「半角で()」と記述すると、これがプログラムの開始位置になります。(※Subの先頭のSは半角の大文字です。)

2-2. 次の行から実際のプログラムの命令を書いて行きます。プログラムの命令は基本的に1行に1つの意味を持った命令を記述し、改行しながら、実行したい順番に上から下に書いて行きます。

2-3. 最後に「End」と書いて「半角スペース」を入れた後に「Sub」と記述すると、これがプログラムの終了位置になります。但し後述しますが、このEnd Subの部分は自動で入力されます。(※Endの先頭のEやSubの先頭のSの部分は共に半角の大文字です。)

ここまで見てきた2-1.~2-3.を簡単にまとめると下記のようになりますね。


Sub プログラムの名前()
プログラムの命令1
プログラムの命令2
...
End Sub

※プログラムを記述する際に入力する命令などの文字は基本的に半角の英数字と思っておいてください。

ここでプログラムの名前という部分がありますがこれを専門用語で「プロシージャ名」と言ったりします。それでは実際にVBEのモジュールにこの部分を入力してみましょう。

2-4. 下図のようにVBEの右側のコードウィンドウの先頭にある「Option Explicit」の行から1行空白行を開けてから(※1)、sub DispTest1 と入力して(※2)、Enterキーを押します。「あれ、先頭のsubのsが小文字ですが大丈夫でしょうか?」大丈夫です。Enterを押した後の結果を見てみましょう。

【補足】

※1について:プログラムを記述する際に適当な位置で空白行を入れることができます。これはプログラムを見やすくするための工夫です。空白行は命令ではないので何も実行されませんのでご安心ください。

※2について:DispTest1はプログラムの名前で一般的には半角の英数文字を用います。プログラムの名前には予約語(※3)が利用できない,先頭を数字にできない等、若干制限はありますが、任意で決めることができます。もしプログラムの名前が文法的に間違っている場合はエラーとなります。今回のプログラムでは「画面に文字を表示するテストで1番目の例題」ということで、これを英語で短縮した形にしたかったためこのような名前にしてみました。

プログラミングの世界ではこのプログラムの名前のことをプロシージャ名とも言いますが、本ブログでは難しい用語はあまり使わないようにしていますので主に「プログラムの名前」と記載しています。また、同じプログラムの名前を重複して作成しないようにしましょう。

※3について:予約語とはExcel-VBAの文法で利用される「Sub」や「If」などの既に役割が決まっている用語のことです。

2-5. すると下図のようになります。

図を見てみると「Option Explicit」の下に境界線が引かれ、プログラムの開始位置のsubの先頭のsが大文字Sに変わり、さらにプログラムの終了位置の「End Sub」も自動で記述されました。このようにプログラムの開始位置を記述すると自動的にプログラムの終了位置の記述も補ってくれます。また、大文字にすべきところは自動的に大文字になります。

ここまでの操作でプログラムの開始位置と終了位置の記述ができました。続いて、画面に文字を表示するプログラムを記述してみたいと思います。

3. 画面に文字を表示するプログラム命令を入力する

ここではVBEの画面下部にある「イミディエイトウィンドウ」に文字を表示するプログラムを記述してみたいと思います。Excelの場合、代表的な画面としてシートがありますが、この「イミディエイトウィンドウ」にプログラムの実行結果を表示して確認する方法がVBAの基となっているBASIC言語の文法を学ぶ際に便利です。では早速記述してみましょう。

3-1. 「イミディエイトウィンドウ」に文字を表示する際の文法は下記のようになります。
Debug.Print "表示したい文字"

このようにDebug.Printと入力した後、「半角スペース1文字」を空けてから「イミディエイトウィンドウ」に表示したい文字の両サイドを「半角のダブルクォーテーション」で囲む形で記述すればよいことになります。

3-2. それでは実際にVBEのモジュールに入力してみましょう。今回は「Hello」という文字を表示してみます。まず、下図の赤枠部(プログラムの開始位置と終了位置の間)の行の先頭から「debug.」まで入力してみてください。本来debugの先頭の文字は半角大文字のDですが、先ほどのケースと同様に小文字でかまいません。

3-3. すると下図のように入力した文字の右側にメニューのようなものが出てきました。これは「インテリセンス」といい、「debug.」に続く文字の候補を教えてくれる機能となります。

3-4. 3-3.の手順でインテリセンスが表示された状態で下記のいずれかの操作を行います。

その1. キーボードの下向きの↓キーを2回押す
その2. debug.の続きの文字である「p」の文字を入力する。

上記のいずれかの操作を行うと、実際に入力したい「Print」の部分が青色で選択されますので、ここで、キーボードの「Tab」キーを押してください。

3-5. すると下図のように「debug.Print」という部分まで命令が入力されました。このように「Tab」キーを押すことで、インテリセンスで選択した文字が確定するという動きがポイントになります。

3-6. つづいて残りの部分を入力しましょう。「半角スペース1文字」を空けてから"Hello"と入力します。下図のようになりましたでしょうか?

3-7. 最後にVBEのコードウィンドウの空白部の適当な所をマウスで左クリックしてみてください。元々、「debug.Print」という表記だった部分が下図のように「Debug.Print」という形になり、入力しようとしていた文字に自動的に変わりました。

既に気づかれた方もおられるかもしれませんが、「Sub」 や「End Sub」、「Debug.Print」の文字が青色になっていますね。このようにExcelがあらかじめ用意している命令などの文字は予約語といって青色で強調されるようになっています。

ここまでの操作で、「イミディエイトウィンドウ」に文字を表示するプログラムが完成しました。ただ、このプログラムは改善したいところが1つあります。見て頂くとわかりますが、プログラムの行間が詰まっていて少し見づらいのです。そこで次のようにしましょう。

3-8. 下図のようにプログラムの開始位置の直後とプログラムの終了位置の直前に空白行を1行追加します。

これでプログラムが見やすくなりました。プログラムの中の空白行は動作に全く影響しませんのでみなさんのご判断で適宜入れてみてください。

4. プログラムを実行する

それでは最後にプログラムを実行してみたいと思います。下記の手順で実行してみましょう。

4-1. まず、プログラムの開始位置である「Sub プログラムの名前()」とプログラムの終了位置である「End Sub」の間のどこでもよいのでマウスで左クリックしてください。(下図の赤矢印で示したようにプログラムの開始と終了の間のどこかでカーソルが点滅していればOKです。)

4-2. 続いて下図のようにVBEの画面上部にある「実行」メニューから「Sub/ユーザーフォームの実行」をクリックします。(※もしくはこの操作をする代わりに、キーボードのF5キーを押してもOKです。)

4-3. すると下図のようにVBEの画面下部にある「イミディエイトウィンドウ」に「Hello」という文字が表示されました。(※実際にはHelloと表示された後に改行されています。Debug.Printという命令は正確にはイミディエイトウィンドウに文字を表示した後に改行する命令なんですね。)

ここまでの操作で画面に文字を表示するプログラミングと、それを実行する手順を確認することができました。

4-4. 次回のブログでも今回利用した「イミディエイトウィンドウ」を利用します。プログラムの実行結果の表示が増えてくるとわかりにくくなってきますので、次回のブログの操作のためにこのウィンドウの内容を下図のようにクリアしておきましょう。一番簡単な方法はウィンドウの中のどこでもよいのでマウスで左クリックした後、「Ctrl」キーを押しながら「A」のキーを押してで全ての文字を選択します。その後、「Delete」キーを押せば1回で消すことができます。

5. プログラムを保存する

最後に下記の手順でプログラムを保存しましょう。といってもExcelの場合、Excelのファイルを保存すれば、今回記述したプログラムも一緒に保存されます。本ブログではデスクトップに保存してみます。

5-1. まず、下図のようにVBEの画面の左上にあるExcelのアイコンのマークの部分をクリックしてExcelのブックの画面に戻ります。

5-2. ブックの画面に戻りましたらExcelの画面上部にある「ファイル」メニューをクリックします。

5-3. 続いて、画面左側の「名前を付けて保存」をクリックします。

5-4. 続いて下図の赤枠部の「参照」をクリックします。

5-5. すると下図のように「名前を付けて保存」画面が表示されます。

5-6.ここで注意点ですが、ExcelでVBEを使ってプログラムを記述した場合、ファイルの種類を変更する必要があります。下図の「ファイルの種類」の部分の右側の部分をクリックしてプルダウンメニューから「Excel マクロ有効ブック(*.xlsm)」をクリックして選択します。

5-7. ここまでの操作でファイル名の部分が「Book1.xlsm」になります。このまま保存してもよいのですが、ここではわかりやすくするために下図のように「Excel-VBA-Test.xlsm」に変更します。最後に「保存」ボタンをクリックしてください。このようにプログラムを記述したExcelのファイルは拡張子が「.xlsm」になっているのがポイントになります。(但し、Excel2007以降)

今回のブログでは、プログラムをどこに書いてどのように実行すればよいのか、またプログラムの保存方法についてお伝えしました。

お疲れさまでした!

ブログの続きはこちら

Excel VBA 入門 目次ページ はこちら

【電子書籍出版のご案内】
本ブログで扱っている「Excel VBA 入門」の内容が、内容を大幅に増やした形で電子書籍(Kindle)になりました。ご興味のある方は、ぜひご覧頂ければ幸いに存じます。
Excel VBA に挫折しないためのプログラミング超入門 (基礎から応用まで)

スポンサーリンク
Simplicityのレクタングル広告(大)
Simplicityのレクタングル広告(大)

シェアする

  • このエントリーをはてなブックマークに追加

フォローする