マクロ関数のひとつ「MsgBox関数」の使い方をご紹介します。
メッセージ機能にはいろいろな種類があります。
マクロ実行中にメッセージ画面を表示させるだけでなく、選択したボタンによってマクロの動作を変更させる使い方もあります。
こちらではいろいろなシーンに合わせた使い方を具体例をつかってご説明します。
メッセージ機能の使い方
MsgBox関数
こちらが「MsgBox関数」の構文です。
MsgBox(Prompt,[Buttons],[Title],[Helpfile],[Context])
引数 | 対象 | 入力値 | 内容 |
Prompt | – | – | メッセージ内容の表示 |
Buttons | ボタン | vbOKOnly | 「OK」 |
ボタン | vbOKCancel | 「OK」or「キャンセル」 | |
ボタン | vbAbortRetryIgnore | 「中止」or「再試行」or「無視」 | |
ボタン | vbYesNoCancel | 「はい」or「いいえ」or「キャンセル」 | |
ボタン | vbYesNo | 「はい」or「いいえ」 | |
ボタン | vbRetryCancel | 「再試行」or「キャンセル」 | |
アイコン | vbCritical | 警告メッセージ | |
アイコン | vbQuestion | 問い合わせメッセージ | |
アイコン | vbExclamation | 注意メッセージ | |
アイコン | vbInformation | 情報メッセージ | |
標準ボタン | vbDefaultButton1 | 第一ボタンを標準設定 | |
標準ボタン | vbDefaultButton2 | 第二ボタンを標準設定 | |
標準ボタン | vbDefaultButton3 | 第三ボタンを標準設定 | |
Title | – | – | メッセージ画面のタイトル名 |
Helpfile | – | – | ヘルプを表示する場合、ファイル名を指定 |
Context | – | – | ヘルプを表示する場合、コンテキスト番号を指定 |
画面表示の設定
引数の設定によって表示される画面の例をご紹介します。
ボタンの種類
引数「Buttons」に代入する値によって、以下のとおりメッセージボックスのボタンの種類が変わります。こちらの引数を省略した場合は「vbOKOnly」が自動的に適用されます。
・vbOKOnly|「OK」
・vbOKCancel|「OK」or「キャンセル」
・vbAbortRetryIgnore|「中止」or「再試行」or「無視」
・vbYesNoCancel|「はい」or「いいえ」or「キャンセル」
・vbYesNo|「はい」or「いいえ」
・vbRetryCancel|「再試行」or「キャンセル」
アイコンの種類
引数「Buttons」では、ボタンの種類だけではなく、アイコンの種類を指定することもできます。それぞれの引数とメッセージボックスの種類は以下のとおりです。
・vbCritical|警告メッセージ
・vbQuestion|問い合わせメッセージ
・vbExclamation|注意メッセージ
・vbInformation|情報メッセージ
改行の方法
メッセージの文字数がおおくなってしまった場合は「改行」をつかうと効果的です。
VBAでの改行おもに3種類の「改行コード」をつかいます。
改行コード | 動作 | 意味 |
vbCr | カーソルを先頭へ | キャリッジリターン文字 |
vbLf | 次の行へ | ラインフィード文字 |
vbCrLf | カーソルを次の行の先頭へ | キャリッジリターンとラインフィードの組み合わせ |
一応ご紹介はしていますが「vbCrLf」だけを覚えておけば問題はないと思います。
メッセージ機能の使用例
基本|メッセージの表示
まずはもっともシンプルな使い方をご紹介します。
マクロ実行中にメッセージを表示させる方法です。
Sub test_message1() MsgBox ("これがメッセージ機能です。") End Sub
こちらが実行結果です。
メッセージ画面で「OK」ボタンを押すだけの種類です。
こちらは長いメッセージを見やすく表示させるために改行をつかった例です。
Sub test_message2() MsgBox ("このようにメッセージが一行でながくなってしまう場合には" & vbCrLf & "改行を有効的につかいましょう。") End Sub
こちらが実行結果です。
文章の途中で改行されていることが確認できます。
応用|選択ボタンの分岐処理
「MsgBox関数」と「変数」を組み合わせることによって、メッセージボックスのボタンの選択でマクロ処理を分岐させることができます。
こちらの具体例をつかってご紹介します。
Sub test_message3() Dim answer As Long answer = MsgBox("このままマクロ実行を続けますか?", Buttons:=vbExclamation + vbYesNo + vbDefaultButton2, Title:="動作確認テスト") If answer = vbYes Then MsgBox ("マクロを続けます。") Else MsgBox ("マクロを中断します。") End If End Sub
2~3行目で「変数」をつかってMsgBox関数をさきに定義したうえで、分岐処理に使います。
マクロを実行します。
このようなメッセージ画面が表示されます。
「はい」を選択した場合はこちら。
「いいえ」を選択した場合はこちら。
このようにメッセージ画面の選択によってマクロ処理を分岐させることができます。
ちなみに選択ボタンによる「戻り値」一覧はこちらです。
選択ボタン | 戻り値 | 値 |
「OK」 | vbOK | 1 |
「キャンセル」 | vbCancel | 2 |
「中止」 | vbAbort | 3 |
「再試行」 | vbRetry | 4 |
「無視」 | vbIgnore | 5 |
「はい」 | vbYes | 6 |
「いいえ」 | vbNo | 7 |
今回の例ではメッセージボックスのボタンの選択によって、「vbYes」もしくは「vbNo」を「戻り値」として受け取ったうえで「If ~ Then」にて分岐処理をしています。
コード例の5行目に「vbYes」と記述されている部分を、「6」に書換えてもおなじ動作になります。
まとめ
MsgBox関数についてのご説明をしました。
メッセージ機能は単純なメッセージの表示だけではなく、分岐処理にもつかる便利な機能ですので積極的に活用をしてみてください。
特に自分でつくったマクロを他のひとに使ってもらうような場合、こういった機能を付けておくとマクロでできることの幅が広がり喜ばれること間違いなしです。
ただし、あまりメッセージ画面が頻発するようなマクロを作ってしまうとクリック自体が手間になってしまいますので、ほどほどにしておきましょうね。