マクロの基本的な構造

前回のマクロの記録で作成されたマクロは「Sub マクロ名()...End Sub」で囲まれていました。マクロは必ず「Sub マクロ名()...End Sub」で囲んで、その中にVBAでプログラムを書きます。

[リスト1] マクロの基本

Sub マクロ名()
  ' ここにプログラムを書く
End Sub

実際に作ってみる

プログラムにいろいろな動きをさせるために、数値や文字をちょっと覚えておきたいことがよくあります。ちょっと置いておきたい箱のことを変数と言います。箱には名前を付けます。これを変数名と言い、半角英数文字を使って自分で好きなように名前を付けることができます。頭1文字目には数値は使えません。またExcelの場合、変数名に漢字を使っても実行させることができます(ただし、あまりお勧めはしません)。

[リスト2] 変数への代入

i = 50   '(1)
j = i + 20 '(2)
s = "こんにちは" '(3)

(1)は変数名iの箱に50という数値を入れたところです。
(2)は変数名iの箱の内容と20を足して変数名jの箱にいれました。70が入ります。
(3)は「こんにちは」と言う文字をsという変数名の箱に入れました。「=」は代入演算子と呼ばれるもので、右の式の結果を左の変数に設定(代入)することを意味します。

プログラミング言語によっては、変数を使うにあたって最初に変数を宣言するという行為が必要なものもありますが、VBAでは使いやすくするために、こうした宣言をしなくても良いことになっています。変数に値を代入するだけで、必要な変数を用意してくれるのです。

VBAの書き方

マクロを作成してみましょう。ここで、もうひとつ「MsgBox」という標準コマンドの説明をします(「01.xlsm」)。

[リスト3] MSGマクロ(01.xlsm)

Sub MSG()
  s = "山田花子"
  MsgBox (s & "さん、こんにちは!")
End Sub

変数名sの箱に「山田花子」という文字列が入っています。文字の場合「"」で囲みます。MsgBoxコマンドで小さなダイアログを表示させ、「s & "さん、こんにちは!"」つまり「山田花子さん、こんにちは!」と表示させます。

[構文]MsgBox

MsgBox(prompt[,buttons][,title][,helpfile,context])

MsgBox関数の引数

引数 概要
prompt 必ず書きます。メッセージの内容です。
buttons 省略可能です。表示するボタンの種類や個数などを指定します。
title 省略可能です。ダイアログのタイトルバーに表示する文字を書きます。
helpfile 省略可能です。説明文がある時指定します。ここを指定した時はcontextも指定します。
context 省略可能です。helpテキストに指定したコンテキスト番号を指定します。

ダイアログは[OK]ボタンをクリックすることで、閉じることができます。「&」は文字列と文字列をつなぐ役目をします。

図3 メッセージボックス(MsgBox)表示

実際に[リスト3]を作ってみましょう。新しいワークブックを作成してください。図2のようにVBE画面を表示させプログラムを書いていきます。Sub MSGと書いてEnterキーを押すと自動的にカッコを補い、かつ、下の行にEnd Subと追加してくれます。中の2行を書き込みましょう。MSGマクロができました。基本編で書いた3種の実行方法、どれでも良いので実行させてみて下さい。図3のような結果が表示されたでしょうか?

図4 プログラムを書き込んだ画面