
1. MsgBox関数は、どのボタンを押したか「戻り値」を持つ
2. 「名前付き引数」利用で、一部の引数のみを指定する
「広告」
(17) MsgBox関数のオプションと、「名前付き引数」の使い方!
Excel メニューバーの [ヘルプ] - [更新プログラムのチェック] にて、適用されていないアップデートがあれば行ってください。Excel 2016 for Mac 環境での説明となりますので、 Mac版 Excel 2011 では( VBA が利用できますが )同じ結果にならない場合があるかもしれません。
現状、 VBE 内で日本語を記述すると(貼り付けのみ可能な場合あり)乱れたり、保存時にクラッシュすることが多いため、 VBAコード は「未変換の英数字のみ」で記述してください。(テキストエディタからの貼り付けは可能)
( ユーザー定義関数 のVBAコードを含んだ)前回使用した XLSM ファイルを、「マクロを有効」にして開きます。
[ alt ] + [ F11 ] にて VBE を開き、Module1 の最後に以下の VBAコードを入力するかコピーして貼り付け。
1. MsgBox関数は、どのボタンを押したか「戻り値」を持つ
Sub TestMsgBox()
Dim num As Integer
Dim msg As String
Dim intButtons As Integer
Dim msgTitle As String
msg = "MsgBox" & vbLf & "Do ~ Loop Until ~"
intButtons = vbOKCancel + vbCritical
msgTitle = "OK / Cancel ?"
Do
num = MsgBox(msg, intButtons, msgTitle)
Loop Until (num = vbOK)
MsgBox Title:=msgTitle, prompt:=msg
MsgBox msg, , msgTitle
End Sub

コードの実行は、イミディエイトウィンドウから call testmsgbox() にて!( [return] キー必要)
(戻り値)= MsgBox( Prompt [, Buttons] [,Title] )
MsgBox関数は、ダイアログボックスにメッセージとボタンを表示し、どのボタンが押されたかどうかを示す整数型の数値を(戻り値)として返す。定数 | 値 | 説明 |
---|---|---|
vbOK | 1 | [OK] ボタンが押された |
vbCancel | 2 | [キャンセル] ボタンが押された |
vbAbort | 3 | [中止] ボタンが押された |
vbRetry | 4 | [再試行] ボタンが押された |
vbIgnore | 5 | [無視] ボタンが押された |
vbYes | 6 | [はい] ボタンが押された |
vbNo | 7 | [いいえ] ボタンが押された |
(引数1) Prompt
省略不可の、ダイアログボックスに表示するメッセージ(文字列)。
途中で強制的に改行したい場合は、VB定数 vbLf を挟む必要がある。
(引数2) Buttons
ダイアログボックスに表示するボタンや、アイコン種類を指定する。
定数 | 値 | 説明 |
---|---|---|
vbOKOnly | 0 | [OK]ボタンのみを表示 |
vbOKCancel | 1 | [OK]、[キャンセル]ボタンを表示 |
vbAbortRetryIgnore | 2 | [中止]、[再試行]、[無視]の3つのボタンを表示 |
vbYesNoCancel | 3 | [はい]、[いいえ]、[キャンセル]の3つのボタンを表示 |
vbYesNo | 4 | [はい]、[いいえ]ボタンを表示 |
vbRetryCancel | 5 | [再試行]、[キャンセル]ボタンを表示 |
vbCritical | 16 | 警告メッセージアイコンを表示 |
vbQuestion | 32 | 問い合わせメッセージアイコンを表示 |
vbExclamation | 48 | 注意メッセージアイコンを表示 |
vbInformation | 64 | 情報メッセージアイコンを表示 |
vbDefaultButton1 | 0 | 第1ボタンをデフォルトボタンにする |
vbDefaultButton2 | 256 | 第2ボタンをデフォルトボタンにする |
vbDefaultButton3 | 512 | 第3ボタンをデフォルトボタンにする |
(引数3) Title
ダイアログボックスに表示するタイトル(文字列)。

最初に表示される MsgBox 関数の結果
Do 〜 Loop Until 〜 を利用して、 [OK] ボタンが押されるまで繰り返し表示を行う。
Dim num As Integer
Do
num = MsgBox(msg, vbOKCancel + vbCritical, msgTitle)
Loop Until (num = vbOK)
2. 「名前付き引数」利用で、一部の引数のみを指定する

2つめに表示される MsgBox 関数の結果
「名前付き引数」を利用すると、(引数の順番も関係なく)一部の引数のみが指定可能となる。
戻り値を持つ Function プロシージャにて戻り値を使用しない場合、引数を括弧で囲むとエラーになる。
以下のように、引数を括弧で囲まずに 列挙しなければならない。
なお、「名前付き引数」名はVBAのヘルプに載っており、VBの仕様通り 小文字/大文字 の区別無し。
Mac版の現状の VBE では [F1] キーで該当のヘルプが表示されないため、「vba msgbox」のキーワードにてブラウザ検索したほうが早い。
MsgBox title:=msgTitle, prompt:=msg

3つめに表示される MsgBox 関数の結果
「名前付き引数」の利用無しに、カンマを連続して記述することにより、引数指定を省略可能。
ただし、「名前付き引数」を利用しないため、決められた引数順で指定する必要がある。
戻り値を持つ Function プロシージャにて戻り値を使用しない場合、引数を括弧で囲むとエラーになる。
以下のように、引数を括弧で囲まずに 列挙しなければならない。
MsgBox msg, , msgTitle
次は、 ワークシートの最終行を取得する方法を説明する予定です。
お疲れ様でした!
[command] + [Q] にてExcel を終了時、「作業中のブック」を保存するか確認のダイアログ画面が表示されるため 「保存」しましょう。
現状、 VBE 内で日本語を記述すると(貼り付けのみ可能な場合あり)乱れたり、保存時にクラッシュすることが多いため、 VBAコード は「未変換の英数字のみ」で記述してください。(テキストエディタからの貼り付けは可能)
「広告」
最後まで読んでいただき、ありがとうございます。
ぜひ、右側の「人気ブログランキング」投票に ご協力ください。
また、お越しくださいませ。
// アタル
「広告」
コメント