VBAの使い方

VBAは「Visual Basic for Applications」の略で、Officeのプログラミング機能である。 Excelのマクロやユーザー定義関数(自作関数)を作ることができる。

準備

新しいExcelブックを開き、「Excelマクロ有効ブック」として保存しておく。

Excelマクロ有効ブック


VBAプログラムを書くために、VBE(Visual Basic Editor)を起動する。 VBEは、開発タブ(前頁参照)の「Visual Basic」ボタンを押すか、または Alt+F11キーを押すと起動する。

VisualBasic


VBEが起動した(このウィンドウのことを「VBAのウィンドウ」と呼ぶこともあるようだ)。

VBA


左上の「VBAProject(ファイル名)」を右クリック → 挿入 → 標準モジュール

標準モジュール作成


「Module1」という名前の標準モジュールが作られ、「Module1」のウィンドウが開いた。
これで準備完了。Module1のウィンドウ内にプログラムを書いていく。

Module1


マクロの作成

メッセージボックスに「hello, world」と表示するマクロを作成する。
Module1のウィンドウの中に、次のプログラムを入力する。 2行目はTabキーで字下げする。

Sub HelloWorld() MsgBox ("hello, world") End Sub

HelloWorld


Excelのウィンドウでマクロを確認すると、「HelloWorld」という名前のマクロができている。

マクロ


このマクロを実行すると、メッセージボックス(小さなウィンドウ)が開き、そこに「hello, world」と書かれている。

マクロの実行


メッセージボックスは「OK」を押すと閉じる。


VBAプログラムの書き方

プログラムは様々な規則(文法という)に従わなければならない。
Excelマクロのプログラムはこのように書くが、


【書き方】
 Sub マクロ名()
  本文
 End Sub

これは
  1. 「Sub」で始まり「End Sub」で終わる
  2. 「Sub」の後ろに空白を挟んでマクロ名を書く
  3. マクロ名の直後に空白を入れず丸括弧を付ける
等の規則に従っている。
先ほどのプログラムをもう一度見てみると、これらの規則に従っていることが分かる。
Sub HelloWorld() MsgBox ("hello, world") End Sub
この例では「HelloWorld」がマクロ名であり、規則に従って直後に丸括弧が付いている。 この例では本文が「MsgBox("hello, world")」の1行だけであるが、複数行にわたって書くこともできる。 「MsgBox」は、メッセージボックスを開くようExcelに指示する命令文であり、直後の丸括弧の中にメッセージを書く。 メッセージが文字列の場合は、その文字列をダブルクォーテーション「""」で挟まなければならない。 この例では「hello, world」がメッセージである。

プログラムは原則として半角で書かなければならない。 空白も含めて半角である。 ただし、マクロ名やメッセージの文字列など、例外的に全角が許されている部分もある。

もう一つプログラムを書いてみよう。

Sub HelloHelloHello() MsgBox ("Hello!") MsgBox ("Hello!!") MsgBox ("Hello!!!") End Sub

2つ目のプログラム


1つ目のマクロの下に2つ目のマクロを書くと、間に自動的に横線が引かれる。
この例のように、プログラムの本文には複数の命令文を書くことができる。 この場合、1行につき1つの命令文を書く。 命令文が3つある場合は3行に分けて書くことになる。 また、3行とも同じ幅だけ字下げして書くようにする(これは規則ではないが守るべき「作法」とされている)。
Excelで確認すると、2つ目のマクロができている。

2つ目のマクロ


実行してみよう。 メッセージボックスに「Hello!」と表示される。
OKを押して閉じると、間髪入れず次のメッセージボックスが現れ「Hello!!」と表示される。
これもOKを押して閉じると、さらに次のメッセージボックスが現れ「Hello!!!」と表示される。

1つ目のメッセージボックス
   ↓
2つ目のメッセージボックス
   ↓
3つ目のメッセージボックス


このように、プログラムに複数の命令文を書いた場合は、複数の命令が同時に実行されるのではなく上から順番に1つずつ実行される仕組みになっている。

プログラムの書き方の規則は他にもたくさんある。 プログラムは全ての規則を守って書かなければならない。 初心者にとって、プログラミング学習の半分は規則の学習であると言ってよい。