[Excel で VBA] 初めての VBA

本ページで初めての VBA プログラミングを体験しよう。

プログラムを書き始めるまでの準備

前ページで学んだように、まず Excel を起動して空白のブックを開く。
下図のように「開発」タブをクリックしてから「Visual Basic」というアイコンをクリックしよう。



すると、以下のように Microsoft Visual Basic for Applications というウィンドウが立ち上がる。
デフォルトで下図のような状態になるので覚えておこう (これから毎回登場する)。



今後、この Visual Basic を用いてプログラミングを行ってゆくわけである。
プログラムの記述を始めるには、まず、メニューから「挿入」→「標準モジュール」を選択しよう。
この手順も毎回行うことになる。



すると、Visual Basic ウインドウの内部に "Module1" というタイトルのついた小さな窓が現れる。
ここに毎週プログラムを書くことになる

このとき、画面左側のツリー構造表示部分に「標準モジュール」「Module1」という項目が現れていることにも注意しよう。

さらに、"Module1" ウィンドウの内部に「Option Explicit」と既に書かれていることに注意して欲しい。
「Option Explicit」が書かれていない場合は、前ページの「Visual Basic での準備」にて「変数の宣言を強制する」にチェックしたかどうかを見直そう。



なお、下図のようにウインドウ内の小さな窓ではなく、ウインドウいっぱいに白いエリアが現れた学生もいるかも知れない。
それは、窓が最大化されているだけであるので、下図の右上の赤丸のボタンを押せば最大化が解除され、小さい窓の状態になる。
もちろんその逆の「小さい窓から最大化」も上図の赤丸で可能なので、好みの方を用いれば良い。




プログラミングと実行

以上の準備の後、既にある「Option Explicit」の行に続けて、以下の内容を記述しよう。

これはVisual Basic と呼ばれるプログラミング言語で書かれたプログラムであり、
本講義ではこの Visual Basic の文法を学び、使いこなせるようにするのが目的である。



まず、一行目から書いて行くことになるが、プログラムは基本的に「英語モード」で入力すること。
上図のプログラムで日本語モードで入力したのは「こんにちは」の5文字だけである。

なお、Visual Basic では皆さんがプログラムを書く際に様々な形で支援してくれる。
例えば、「Sub prog()」と入力して改行すると…



以下のように「End Sub」が自動的に付加される。これで、皆さんがキーボードで書くべき行が3行から2行に減った。



さらに、「Sub prog()」と「End Sub」の間にある「MsgBox "こんにちは"」において、「MsgBox」は大文字と小文字が混じった命令である。
しかし、これを下図のように全て小文字で書いてしまったとしても…



カーソル (書き始めの縦棒) を別の行に移動すると、下図のように自動的に大文字小文字混じりに自動的に修正してくれる。



このように、Visual Basic for Applications (VBA) は、初めてプログラミングを学ぶ学生にとって
親切な機能がたくさんついており、学びやすい言語であると言える。
他にも、ダブルクオーテーョンを日本語の「”」で書いてしまっても英語の「"」に修正してくれたりする。

しかし、この親切な機能に慣れ過ぎてしまうと、他のプログラミング言語を学ぶ際に逆に学びにくくなってしまう。
そのため、他のプログラミング言語にも興味があるという学生は、あまりこの便利な機能に慣れすぎないことをお勧めしておく。

また、以下の点にも注意して欲しい。 さて、記述が終わったら、下図の「Sub/ユーザーフォームの実行」ボタンをクリックしよう。
これは、記述したプログラムを実行するためのボタンである。




すると、画面が Excel のシートに変わって下図のように「こんにちは」と書かれたウインドウが現れる。
想像がつくかもしれないが、これは記述したプログラム中の 「MsgBox "こんにちは"」なる行が実行されたのである。



なお、この小窓が現れたら、「OK」ボタンをクリックしてこの小窓を閉じる癖をつけよう
そうしないと、プログラムを変更できない状態のままになってしまう。

なお、書いたプログラムに誤りがあった場合はもちろん上図の小窓が現れない。
その場合、プログラムの間違いを修正してからもう一度実行を試すことになるが、
その前に下図の「リセット」ボタンで実行を一旦停止しないと、プログラムの編集ができない状態になっていることが多いので注意すること。




プログラムの実行に関する注意

プログラミングの実行に関して注意をここで述べておく。

このプログラムを実行する前に、マウスカーソルが下図のように 「prog プロシージャ」内にあるようにしてから実行しよう。
(Sub prog() ~ End Sub の間のこと)

なお、「プロシージャ (procedure:手続き)」という用語の意味は後の講義で明らかになるが、早く VBA の用語に慣れるために、
今後も積極的にこの言葉を使っていく。



この場合、問題なくプログラムが起動することがわかるであろう。

次に、マウスカーソルをわざと prog プロシージャの外に出してプログラムを実行してみよう。



今度は以下のような画面が現れる。
これは、実行するプロシージャが prog で良いかどうかを尋ねているのである。

もちろん、prog を実行して構わないので、「実行」ボタンをクリックする。



一つのプログラムに複数のプロシージャがある場合 (いずれ学ぶ) 、 上のような画面が現れて実行するプロシージャを選択することができる。
この画面が出ても慌てないようにしよう。


コメント文

プログラムのソースコード中に、コメント文を挿入したいことがしばしばある。
(「コメント文」とは、ソースコード中で実行されずに無視される文のことである)

長いプログラムを書いている時、「この命令はどういう意図で書いたのか」を コメント文として残しておくと後々便利である。

コメント文は下図のように 「' (アポストロフィ)」から書き始める。
アポストロフィから行末まではコメント文として緑色で表示され、プログラムとしては無視される。
日本語キーボードでは、アポストロフィは「Shift キー + 7キー」で入力する。念のため。




複数行を一行に

VBA では一行に一つの命令を書くのが基本であるが、複数の命令を一行にまとめることもできる。

具体的には、以下のように 3 行を「: (コロン)」でつないで記述する。確認してみよ。



[補足] (プログラミングに興味がある人向け。そうでない人は読み飛ばして構わない)

このように、Visual Basic というプログラミング言語では行で命令を区切るのが基本であるが、
C/C++/Java/C# などの言語では、行ではなく命令間を「; (セミコロン)」で区切る。



一行を複数行に

逆に、一行に書くべき命令を複数行に分けて書きたい場合には、下図のように命令を区切る場所で「_ (アンダーバー)」を記述すれば良い。
(下の図はやや見にくいが、注意してみるとアンダーバーがあることがわかる)



長い命令を書かねばならないとき、このように複数行にわけて見やすくすることはしばしば行われる。


保存と読み込み

皆さんが VBA で記述したプログラムが正しく動いたら、ここでそれを保存してから閉じ、再び開き直す方法を学ぼう。

その方法を知らないと、今後大きなプログラムを書かねばならないときに、
作業を途中で中断できなくなるためである。

マクロを含んだファイルの保存は、通常の Excel ファイルの保存と読み込みの方法と大きく異なる点があるので注意しよう。

まず、Visual Basic の画面のままでは保存ができないので、Visual Basic の画面から Excel の画面に移ろう
そして、Excel 上のファイル タブをクリックしよう。



そこで下図のように「名前を付けて保存」をクリックし、「参照」ボタンをクリックする。



すると、下図のようにどの場所にどのような名前で保存するかを聞くウインドウが現れる。

Windowsに慣れている学生はどこに保存しても構わない。しかし、Windowsに慣れていない学生は、
「保存したファイルがどこにあるかわからない」という状態を避けるため、デスクトップに保存することを勧める
下図では、左側の階層構造でデスクトップを選択している。

ファイル名は何でも構わないが、下図では「第一回課題」としている。

さらに、「ファイルの種類」において、「Excel マクロ有効ブック (*.xlsm)」を選択しよう。
この「Excel マクロ有効ブック (*.xlsm)」の選択は、本講義で毎回行う必要がある。
この選択をしないと、保存の際に皆さんの書いたプログラムは全て消えてしまうので注意すること!



なお、「Excel マクロ有効ブック (*.xlsm)」は、下図のように「ファイルの種類」の選択肢の上から2番目である。



ファイルの種類を「Excel マクロ有効ブック (*.xlsm)」にし、慣れていない学生は場所をデスクトップにしたら、「保存」ボタンをクリックして保存しよう。

そして、Excel と Visual Basic の画面を全て閉じよう。

さて、ファイルが正しく保存されたかどうか、ファイルを開いて確認してみよう。
デスクトップに保存した学生は、以下のように保存したファイルが見つかるはずであるので、ダブルクリックして開こう。



すると、下図のように「セキュリティの警告」が現れる。
これは、VBA プログラム (マクロともいう) を含む Excel ファイルを開くときには必ず現れる。「コンテンツの有効化」をクリックしよう。



そうすると、何も入力されていない Excel シートが現れる。
そこで、下図のように「開発」タブ→「Visual Basic」ボタンをクリックしよう。



すると、Visual Basic のウインドウが開き、皆さんの書いたプログラムが現れるはずである。
そこから、再びプログラムを編集できるようになる。



もし、皆さんの書いたプログラムが現れなかった場合、保存の際にプログラムを消してしまった可能性がある。
ファイルの種類を「Excel マクロ有効ブック (*.xlsm)」にして保存しただろうか?

通常の拡張子 xlsx の Excel ファイルと、 本講義で用いる拡張子 xlsm の Excel ファイルの違いを良く確認しよう。

種類 拡張子 マクロの保存 用途
Excelブック .xlsx × 情報処理入門で扱った通常の Excel ファイル
Excel マクロ有効ブック .xlsm 情報処理演習で扱うマクロ入り Excel ファイル




←VBA を利用するための準備ボタンからのプログラムの起動→

Excel で学ぶ Visual Basic for Applications (VBA)に戻る