
お知らせこの記事は初心者用マクロ学習講座|勉強範囲を限定&12本の動画で早く効果を実感の関連記事です
Ifステートメントとメッセージボックスは相性抜群です
Ifステートメントというのは関数のIf文と同じ機能です。型が少しだけ違うだけで考え方は一緒です。コードだけ紹介すると話は終わってしまいます。
よってもう少し内容を充実させるためにメッセージボックスと組み合わせて使い方動画を作ってみました。
自分だけで使う時はメッセージボックスを使わなくても良いのですが他者やグループで使う事を想定するとメッセージボックスを用意した方が親切です。
- 実行します。よろしいですか?
- 本当に削除しますか?
- ○○が空欄です。記入後実行ボタンを押してください。
こんな感じで都度メッセージを表示させることが出来ると自分以外の人がデータを触ってもエラーが出にくくなります。

対話型のデータを用意する事が出来るとアプリケーション感も出ますね
では今回はメッセージボックスとIfステートメントを絡めた動画を用意しましたのでご覧ください。その後要点だけピックアップして解説していきます。
メッセージボックスは色々な要素を設定出来ます。体系的に見られるようにリストを沢山使って出来るだけ見易く記事を書いています。是非ご覧ください。
記事の難易度
ほぼ3に近い2です。2.8ぐらいの設定です。
オンラインミーティング
メッセージボックスやIfステートメントは型が決まっているとはいえ最初は難しいです。分かりにくい点はオンラインミーティングでも説明する様に準備しています。

前回記事
前の記事VBAのForNextステートメントで複数セルの仕事を1秒で片付ける
この記事を読むとわかる事
Ifステートメントを使って条件毎に処理を分けられるようになります。
- メッセージボックスの使い方が分かります
- Ifステートメントの使い方が分かります

マクロ
加えてメッセージボックスとIfステートメントの組み合わせで処理を分ける事が出来る様になります。
2分動画

メッセージボックスとIfステートメントを一緒に使うコードの動画です
動画の中からさらに要点を絞って解説していきます。
メッセージボックス
身近なところだとExcelを使い終わる際に画面右上の×ボタンを押す事がありますよね。その際以下の様なメッセージボックスが出ます。(Excelのバージョンにより多少内容に差があります)

これはデフォルトで用意されているメッセージボックスです。ある程度想定される作業についてはExcelは最初からメッセージボックスを用意してくれています。
マクロではこのメッセージボックスを自作する事が出来ます。コードでは以下の様に指示をします。
MsgBox “prompt” , “buttons” , “title”
動画の中では以下の様な使い方をしています。
a = MsgBox("セルA2は「おはよう」と書いてありますか?", vbYesNo + vbExclamation, "確認")
MsgBoxのあとにかっこが入ります。これはこのコードから得られる戻り値を変数aに代入する為のかっこです。メッセージボックスだけで使う時はかっこは必要無いです。ご注意ください。
引数は3つです。本当はもう少し数がありますがここでは3つにします。
引数 | 詳細 |
---|---|
prompt | 必ず指定します 表示させたい文字をダブルクォーテーションで囲みます |
buttons | 省略出来ます 省略するとOKボタンのみ表示されます ボタンの仕様は別のリストで紹介します |
title | 省略出来ます 省略するとMicrosoft Excelの表記が入ります |
先程紹介したメッセージボックスを使いコードで指定する引数がどこに展開されるのかを見てください。これでイメージが膨らむはずです。

メッセージボックスの種類
ボタンは省略するとOKボタンのみ表示されます。それだけだと実際の業務には対応出来ない事が多いです。色々な仕様に対応する為ボタンの仕様には種類がありますので紹介します。
加えてメッセージボックス左に表示される黄色の三角に「!」マーク(エクスクラメーションマーク)の画像のようにアイコンを表示させる事も可能です。
動画内のメッセージボックス用のコードです。以下リストと見比べながら動画を見るとより理解が進むはずです。チャレンジしてみてください。
a = MsgBox("セルA2は「おはよう」と書いてありますか?", vbYesNo + vbExclamation, "確認")
ボタン
ここでは6種類をリスト化します。
定数 | 値 | 内容 |
---|---|---|
vbOKOnly | 0 | 「OK」ボタンのみ |
vbOKCancel | 1 | 「OK」ボタンと「キャンセル」ボタン |
vbAbortRetryIgnore | 2 | 「中止」ボタンと「再試行」ボタンと「無視」ボタン |
vbYesNoCancel | 3 | 「はい」ボタンと「いいえ」ボタンと「キャンセル」ボタン |
vbYesNo | 4 | 「はい」ボタンと「いいえ」ボタン |
vbRetryCancel | 5 | 「再試行」ボタンと「キャンセル」ボタン |
アイコン
ここでは4種類をリスト化します。
定数 | 値 | 内容 |
---|---|---|
vbCritical | 16 | 警告(赤丸内に白のバツ) |
vbQuestion | 32 | 問い合わせ(青丸内に白のはてな) |
vbExclamation | 48 | 注意(黄色三角内に黒のエクスクラメーションマーク) |
vbinformation | 64 | 情報(青丸内に白のアルファベットの i ) |
戻り値
ボタンを押された時に返す値をリストにしました。
定数 | 値 | 説明 |
---|---|---|
vbOK | 1 | OK |
vbCancel | 2 | キャンセル |
vbAbort | 3 | 中止 |
vbRetry | 4 | 再試行 |
vbIgnore | 5 | 無視 |
vbYes | 6 | はい |
vbNo | 7 | いいえ |
動画ではメッセージボックスで「はい」か「いいえ」を選択すると6か7が返ってくる仕様でした。
リストを見ると理由が分かります。メッセージボックスで「はい」を選択すると戻り値は6(定数だとvbYes)という事になります。
Ifステートメント
まず基本的な型の説明をします。動画内で使用した画像です。

基本のかたち
基本はIf、Then、Else、End if の4つのコードからなる型で出来ています。
- Ifの後に条件を記入します。ここでは色々な条件を提示する事が出来ます。条件を書いた後はThenで閉じてください。
- 次に指定した条件がTrueだった時の処理を書きます。Elseを挟み条件がFalseだった時の処理を書きます。
- 最後にEnd Ifを書いてIfステートメントは終了となります。
1の条件と2のTrue、Falseの処理が仕事に合わせて変わりますが基本となる型はずっと同じ配置、同じ使い方をします。
比較演算子
条件については式を用いる事が多いです。今回の a = 6 を使ってリストを作ってみます。
例 | 説明 |
---|---|
a = 6 | aと6が等しい時にTrue |
a < 6 | aが6より小さい時にTrue |
a <= 6 | aが6以下の時にTrue |
a > 6 | aが6より大きい時にTrue |
a >= 6 | aが6以上の時にTrue |
a <> 6 | aが6と等しくない時にTrue |
Ifステートメントのネスト
ワークシート関数同様Ifステートメントの中にIfステートメントを埋め込む事も可能です。そうする事で選択肢の幅を増やすことが出来ます。別記事を用意する予定です。
MsgBoxとIfステートメントの組み合わせ
メッセージボックスとIfステートメントの解説をしてきました。ここで2つの機能を合わせて考えてみます。
メッセージボックスのボタンでvbYesとvbNoを使っています。よって戻り値は6 or 7を受け取る仕様です。
続いてIfステートメントです。動画では a = 6 を条件に使っています。
メッセージボックスで「はい」が選択されるとIfステートメントの条件はTrueを返します。続いてTrueの処理が走るのでセルに「おはよう」が記入されるという建付けです。
今回はメッセージボックスとIfステートメントを組み合わせて使いましたが別々に使っても良いです。またIfステートメントは繰り返し処理と一緒に使うと絶大な効果を発揮します。
このシリーズの最後に繰り返し処理とIfステートメントを合わせたコードを紹介する動画を用意しています。
コードを途中で中断したい時
コードを途中で中断したい時という表現が適切でないかもしれません。もう少し言い方を変えると「条件によってはその後の処理に進みたくない時」にどうするかを紹介します。

コードはWクリックで選択出来ます。その後「Ctrl+C」でコピー、「Ctrl+V」で貼付けです。
Sub 条件分岐()
Dim a As Long
a = MsgBox("セルA2は「おはよう」と書いてありますか?", vbYesNo + vbExclamation, "確認")
If a = 6 Then
Cells(2, 2) = "おはよう"
Else
MsgBox "処理を中止します", , "お知らせ"
Exit Sub
End If
End Sub
動画と同じコードですが一部変えています。「Else」以下にメッセージボックスと「Exit Sub」というコードが書かれています。
メッセージボックスで「いいえ」を選択すると変数aに戻り値7が代入されます。変数aが7の時はIfステートメントで条件は「False」になるので今回追加したコードの処理となります。
メッセージボックスは先程説明した通りです。お知らせだけのメッセージボックスで「OK」ボタンを押して終了ですがその後に「Exit Sub」を通過します。
このコードは「ここでプロシージャから抜けます」というコードです。これで処理を中止する事が出来ます。
Exit Sub が無いとどうなるでしょうか?
メッセージボックスで「いいえ」を選択した後にIfステートメントで処理が止まらなくなるのでIfステートメントの後にコードが書いてあるとそのコードを実行してしまいます。
分岐によってその後のコードを実行したくない処理は「Exit Sub」を忘れずに書きましょう。
まとめ
長くなりましたが条件分岐について解説しました。メッセージボックスもIfステートメントも色々な要素が設定出来るので複雑に感じますがリスト化して体系的に眺めると理解が進みます。
条件やFrue、Falseの時に実行させたいコードさえ書けるようになればあとは型にはめるだけです。
- メッセージボックスの使い方
- Ifステートメントの使い方
- MsgBoxとIfステートメントの組み合わせ

マクロ
繰り返し処理同様条件分岐もマクロの効果を体験するにはもってこいの要素ですが慣れるまでは相当難しいです。
分からない事がありましたらオンラインミーティングも可能です。ご検討ください。
次の記事ワークシート関数の使い方VLOOKUPメソッド使用時はエラー対策が必須