総務畑のエクセルマクロ  | 準備 | 記述基礎 | 文字入力 | 条件文 | ループ文 | メッセージ | 小技 | エラー |

メッセージ教材(画像表示ツール)をダウンロード

さて、最後にメッセージBOXを呼び出し、メッセージを伝える為の記述を学習していきましょう。

ここでダウンロードしたエクセルファイルの解説に習ってメインシートを↓のように作成しましょう。時間がないときは『短縮版1』シートをご利用下さい。


9:メッセージ文を作ってみよう

@メッセージはとてもシンプルに記述することもできますが、今回は応用性の高いメッセージの記述方法を紹介します。

★メッセージBOX記述方法★

メッセージ変数 = "ここに伝えたいメッセージを記入します"
スタイル変数 = スタイル@ + スタイルA
タイトル変数 = "タイトルを記入します"
メッセージBOX変数 = MsgBox(メッセージ変数, スタイル変数, タイトル変数)

↑を見ると分かるとおり、メッセージ、スタイル、タイトルをまず変数で設定し、それをMsgBox()の括弧のなかに投げ込みます。 そしてそのMsgBox(〜)も変数化しています。

ひとまずスタイル@、Aの詳しい記述は置いておいて、どの位置にどの記述が反映されるのか↓の図を見てみましょう。

〜スタイル@の選択肢〜

スタイル@の場所には、↓の記述が入ります。これを入れ替えることにより、表示されるボタンが変化します。

スタイル@記述 反映されるボタン
vbOKOnly
vbOKCancel
vbYesNo
vbYesNoCancel

〜スタイルAの選択肢〜

スタイルAの場所には、↓の記述が入ります。これを入れ替えることにより、表示されるボタンが変化します。

スタイルA記述 反映されるアイコン
vbInformation
vbQuestion
vbExclamation
vbCritical

Aでは実際メッセージBOXを作ってみましょう。今回まずはじめに作るのは、ダウンロードしたツールにおいて、 IDとPASSが一致しなかったときに表示するメッセージです。↓のように記述してみてください。

そして↑を実行すると、↓のようなメッセージBOXが出てきます。

Bさて、↑とは違って、選択ボタンが2つ以上ある場合はどのように場合分けをしたらよいのでしょう。 たとえば、“OK”を押したら処理をするが、“キャンセル”を押したら処理をしない、など、 選択したボタンによって処理内容を変える記述を紹介します。

〜スタイル@が vbOKCancel のとき、押したボタンにより処理を変える場合の記述方法〜

メッセージ変数 = "ここに伝えたいメッセージを記入します"
スタイル変数 = vbOKCancel + スタイルA
タイトル変数 = "タイトルを記入します"
メッセージBOX変数 = MsgBox(メッセージ変数, スタイル変数, タイトル変数)

If メッセージBOX変数 = vbOK then
  OKを押したときの処理を記述
Else
  Cancelを押したときの処理を記述
End If

解説)ボタンを押すと、メッセージBOX変数の返す値が押したボタンに応じて変化します。 If 文を使い、その返し値に応じて場合分けをしています。

押すボタン メッセージBOX変数の返し値
vbOK
vbYes
vbNo
vbCancel

Cでは↑を踏まえて、“OK”を押したら画像を開き、“キャンセル”を押したら画像を開かない記述をしてみましょう。 画像のURLはセル“A1”に記入したものを開きます。

DメッセージBOXを表示する為の記述ができあがりました。しかし、メッセージは程よいタイミングで、 分かりやすく表示させることが重要です。今回それを考えながらこの画像表示マクロを↓のように完成させましょう。

↑で使用されている認証変数は、認証できたときに 0 ⇒ 1 に変える変数です。 これを使用して、認証ができたときに画像を開くメッセージを、認証ができなかったときに不認証メッセージを表示させるようにしています。

さて、これでVBAに関する一通りの記述は学習したことになります。 条件文やループ文などは今回紹介した方法以外にもいろいろ参考書等で取り上げられていますが、 基本的に今回の方法を知っていればほとんど(日常業務の95%以上)をカバーできるといっても過言ではありません。