
メッセージボックスとIF文を組み合わせて使う
今回はメッセージボックスとIF文について勉強していきます。
以前勉強したボタンと連動する作業になります。

ボタンを押した際「本当に〇〇しても良いですか?」のようなダイアログボックスを出してみようと思ってます。
例えば間違えて×ボタンを押してしまった際にこんなダイアログボックスを見たことありませんか?
「ほんとに消しても良いですか?」というメッセージボックスです。
これを出してあげるとデータを間違えて消してしまったという事も少なくなりますよね。
加えてIF文も覚えていただきます。関数のIFと同じ機能です。
Ifステートメントと言われていますが長いので以降はIF文と書いていきます。
前回の記事
メソッドについて勉強しました。
Excelファイルを使ってプロパティ、メソッドについて説明しています。
コードについてはクリア、コピー&ペースト等を使ったコードを書きました。
今は完全に理解出来なくても良いので先に進みましょう。
本記事での課題
今回の課題です。本記事と次の記事は非常に重要です。

メッセージボックスとIF文を使ってみよう
メッセージボックスとIF文について
実行ボタンを押した後に以下のようにメッセージボックスを出すことにします。

アプリケーションっぽくなりますよね。
同時にIF文について勉強できるので採用してみました。
建付けを説明します。
実行ボタンを押したら上記のようにメッセージボックスを出します。
OKならOKの処理を行いキャンセルならキャンセルの処理を行うというコードを書いてみます。
事例:コードを紹介
まずはコードを紹介します。
Option Explicit
Sub メッセージボックスとIF文()
'変数を定義(分かりやすくする為に日本語で書きます)
Dim 回答 As Long
'回答という変数にOKかNGの値を代入する。OKだと1、NGだと2が返ってくる。
回答 = MsgBox("実行しますか?", vbOKCancel + vbExclamation, "実行確認")
'もし変数「回答」が1だったら・・・
If 回答 = 1 Then
'指定のセルに OKですよ と表示
Range("A1").Value = "OKですよ"
'回答が1だったら・・・
Else
'指定のセルに Cancelですよ と表示
Range("A1").Value = "Cancelですよ"
End If
End Sub
キーとなるのは2つ。メッセージボックスの書き方とIF文の書き方ですね。
メッセージボックス
コードのフォーマットです。以下のように書きます。
- MsgBox prompt , [Buttons],[Title],[HelpFile],[Context]
[ ] の中は省略可能です。promptだけは必須です。
prompt
メッセージボックスに表示させる文字です。
上の画像に置き換えると「実行しますか?」という文字になります。
Buttons
ボタンの種類やアラートマークの設定をします。
今回はOKとCancelを表示させたかったのでvbOKCancelにしています。
+vbExclamationで警告メッセージを出しています。
上の画像に置き換えると「△の中に!マークがある表示」ですね。
Title
メッセージボックスのタイトルです。
上の画像に置き換えると「テスト」という文字です。
HelpFile と Context は私も分かりません。(すいません)
多分使わないと思いますが興味ある方は調べてみてください。
ボタンの仕様
今回はコード内でVbOKCancelというコードを書いています。
このコードで「OKボタン」と「キャンセルボタン」を用意しています。
番号 | 定数 | 値 | 内容 |
---|---|---|---|
1 | vbOKOnly | 0 | 「OK」ボタンのみ |
2 | vbOKCancel | 1 | 「OK」ボタンと「キャンセル」ボタン |
3 | vbAbortRetryIgnore | 2 | 「中止」ボタンと「再試行」ボタンと「無視」ボタン |
4 | vbYesNoCancel | 3 | 「はい」ボタンと「いいえ」ボタンと「キャンセル」ボタン |
5 | vbYesNo | 4 | 「はい」ボタンと「いいえ」ボタン |
ボタンの戻り値
右のテーブルの様にボタン毎に戻り値が決まっています。
メッセージボックスのボタンは色々な種類があります。
ご自身で使いやすいものを決めておくと良いです。
いざ使う時に迷わずコードに展開しやすいです。
メッセージボックスの文章と合わせてご検討ください。
番号 | 定数 | 戻り値 | 説明 |
---|---|---|---|
1 | vbOK | 1 | OK |
2 | vbCancel | 2 | キャンセル |
3 | vbAbort | 3 | 中止 |
4 | vbRetry | 4 | 再試行 |
5 | vbIgnore | 5 | 無視 |
6 | vbYes | 6 | はい |
7 | vbNo | 7 | いいえ |
IF文
次にIF文です。IF文も形が決まっています。
If 条件 Then
'条件がTrueだった時の処理
Else
'条件がFalseだった時の処理
End If
これに当てはめればOK。
ワークシート関数でIF文書いている人達は結構イメージしやすいのではと思います。
枠が決まっているので関数より見易い気がしませんか。
IF(条件,Trueの時,Falseの時)という関数を縦に書いただけという感じを持っています。
今回のコードの仕様です
メッセージボックスでOKボタンが押されると変数「回答」に1が代入されます。
その後セルA1に「OKですよ」と表示されます。
メッセージボックスでキャンセルボタンが押されて変数「回答」に2が代入された時はどうでしょうか。
答えはセルA1に「Cancelですよ」と表示されるというコードになっています。
まとめ
ワークシート関数の様にIF文を重ねて書いたりすることも可能です。
IF文が理解出来るとコードの幅が広がりやれることも増えます。
なによりIF文はマクロの記録では再現出来ないコードになります。
これが書けるだけで普通の方が出来ない事が出来るという事になります。
- メッセージボックスの使い方
- IF文の建付け
- MsgBoxとIF文は相性が良い

Enjoy Excel
では次はループ処理です。これもマクロの記録では書けないコードです。
みんなで勉強してスキルアップしましょう。