VBAは「Visual Basic for Applications」の略で、Officeのプログラミング機能である。
Excelのマクロやユーザー定義関数(自作関数)を作ることができる。
準備
新しいExcelブックを開き、「Excelマクロ有効ブック」として保存しておく。

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

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

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

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

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

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

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

メッセージボックスは「OK」を押すと閉じる。
VBAプログラムの書き方
プログラムは様々な規則(文法という)に従わなければならない。
Excelマクロのプログラムはこのように書くが、
【書き方】
Sub マクロ名()
本文
End Sub
これは
- 「Sub」で始まり「End Sub」で終わる
- 「Sub」の後ろに空白を挟んでマクロ名を書く
- マクロ名の直後に空白を入れず丸括弧を付ける
等の規則に従っている。
先ほどのプログラムをもう一度見てみると、これらの規則に従っていることが分かる。
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

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

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

↓

↓

このように、プログラムに複数の命令文を書いた場合は、複数の命令が同時に実行されるのではなく上から順番に1つずつ実行される仕組みになっている。
プログラムの書き方の規則は他にもたくさんある。
プログラムは全ての規則を守って書かなければならない。
初心者にとって、プログラミング学習の半分は規則の学習であると言ってよい。