記事キャッチ画像  (17) MsgBox関数のオプションと、「名前付き引数」の使い方! 

 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


04

コードの実行は、イミディエイトウィンドウから call testmsgbox() にて!( [return] キー必要)


 (戻り値)= MsgBox( Prompt [, Buttons] [,Title] ) 

MsgBox関数は、ダイアログボックスにメッセージとボタンを表示し、どのボタンが押されたかどうかを示す整数型の数値を(戻り値)として返す。
定数 説明
 vbOK  [OK] ボタンが押された
 vbCancel  [キャンセル] ボタンが押された
 vbAbort  [中止] ボタンが押された
 vbRetry  [再試行] ボタンが押された
 vbIgnore  [無視] ボタンが押された
 vbYes  [はい] ボタンが押された
 vbNo  [いいえ] ボタンが押された

(引数1) Prompt
省略不可の、ダイアログボックスに表示するメッセージ(文字列)。
途中で強制的に改行したい場合は、VB定数 vbLf を挟む必要がある。

(引数2) Buttons
ダイアログボックスに表示するボタンや、アイコン種類を指定する。
定数 説明
 vbOKOnly  [OK]ボタンのみを表示
 vbOKCancel  [OK]、[キャンセル]ボタンを表示
 vbAbortRetryIgnore   [中止]、[再試行]、[無視]の3つのボタンを表示
 vbYesNoCancel  [はい]、[いいえ]、[キャンセル]の3つのボタンを表示
 vbYesNo  [はい]、[いいえ]ボタンを表示
 vbRetryCancel  [再試行]、[キャンセル]ボタンを表示
 vbCritical 16   警告メッセージアイコンを表示
 vbQuestion 32   問い合わせメッセージアイコンを表示
 vbExclamation 48   注意メッセージアイコンを表示
 vbInformation 64   情報メッセージアイコンを表示
 vbDefaultButton1  第1ボタンをデフォルトボタンにする
 vbDefaultButton2  256   第2ボタンをデフォルトボタンにする
 vbDefaultButton3  512   第3ボタンをデフォルトボタンにする
(注) 赤字のメッセージアイコンは、現状 Mac版では反映されない。

(引数3) Title
ダイアログボックスに表示するタイトル(文字列)。


18
 最初に表示される MsgBox 関数の結果 
Do 〜 Loop Until 〜 を利用して、 [OK] ボタンが押されるまで繰り返し表示を行う。

 Dim num As Integer
 Do
  num = MsgBox(msg, vbOKCancel + vbCritical, msgTitle)  Loop Until (num = vbOK)


 2. 「名前付き引数」利用で、一部の引数のみを指定する 

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

 MsgBox title:=msgTitle, prompt:=msg


34
 3つめに表示される MsgBox 関数の結果 
「名前付き引数」の利用無しに、カンマを連続して記述することにより、引数指定を省略可能
ただし、「名前付き引数」を利用しないため、決められた引数順で指定する必要がある。
戻り値を持つ Function プロシージャにて戻り値を使用しない場合、引数を括弧で囲むとエラーになる。
以下のように、引数を括弧で囲まずに 列挙しなければならない。

 MsgBox msg, , msgTitle


次は、 ワークシートの最終行を取得する方法を説明する予定です。


お疲れ様でした!
[command] + [Q] にてExcel を終了時、「作業中のブック」を保存するか確認のダイアログ画面が表示されるため 「保存」しましょう。
現状、 VBE 内で日本語を記述すると(貼り付けのみ可能な場合あり)乱れたり、保存時にクラッシュすることが多いため、 VBAコード は「未変換の英数字のみ」で記述してください。(テキストエディタからの貼り付けは可能)

  「広告」  
  

最後まで読んでいただき、ありがとうございます。
ぜひ、右側の「人気ブログランキング」投票に ご協力ください。
また、お越しくださいませ。
// アタル
 

  「広告」