メッセージに改行コードを挿入

メッセージを改行する&ユーザーに選択させる~MsgBox関数2

画面にメッセージを表示するMegBox関数は、非常に便利な命令です。
でも短いメッセージなら、いいんですが、 長いメッセージの時は、途中で改行するためのコードを記述してやりましょう。
改行に使うコードは数種あり,定数VbNewLineとVbCrLf、またはASCⅡコードのchr(10)、chr(13)、chr(13)&chr(10)を挿入します。
(サンプルファイルは、こちらから 2013マクロ講座20回サンプルデータ

メッセージを改行する

長いメッセージは、適当な箇所で改行しましょう。
たとえば、ユーザーに質問してますが、質問が長くて読みにくいですね。
改行すれば、見やすくなります。
はい(Y)をクリックすると、こんな結果になります。
いいえ(N)をクリックすると、以下のように表示されます。(ヒドイ)
改行するには、定数で入れても、値で入れてもOKです。
Excelでは、同じように表示されます。

Chr(13)で改行する

Chr(13) を入れた場合や、chr(13)&chr(10)、chr(10)を入れた場合のどのコードを入れても同じように改行されます。

Sub メッセージ改行後()
    Dim QMeg As Integer
    QMeg = MsgBox("あなたは太ってますか?" & Chr(13) & Chr(13) & _
        "太ってる:はい(Y)ボタン" & Chr(13) & _
        "太ってない:いいえ(N)ボタン", vbYesNo + vbQuestion, "Test")
    If QMeg = vbYes Then
        MsgBox "夕飯ぬきです。", vbInformation, "対策"
    Else
        MsgBox "うそです。", vbCritical, "診断"
    End If
End Sub
スポンサーリンク
スポンサーリンク

定数を入れて改行する

定数「vbLf」を入れた場合や、定数「vbCrLf」を入れた場合、そして定数「vbNewLine」を入れた場合も改行の結果は見かけ上同じです。

Sub メッセージ改行後2()
    Dim QMeg As Integer
    QMeg = MsgBox("あなたは太ってますか?" & vbNewLine & vbNewLine & _
        "太ってる:はい(Y)ボタン" & vbNewLine & _
        "太ってない:いいえ(N)ボタン", vbYesNo + vbQuestion, "質問")
    If QMeg = vbYes Then
        MsgBox "夕飯ぬきです。", vbInformation, "対策"
    Else
        MsgBox "うそです。", vbCritical, "診断"
    End If
End Sub
    
本来使い分けがあるのでしょうが、Excelで使用する分には、どれを使用しても同じ結果になっています。
とはいえ、説明を見る限り、どれかひとつを選ぶなら、定数「vbNewLine」がいいかもしれません。 現在のプラットフォームに最適ないずれかを使用するというきわめて柔軟性のある定数だからです。

MsgBox関数 ユーザーに選択させるvbYesNo


マクロのコードですが、
第1引数promptには、メッセージとして表示する文字列を指定します。
第2引数のbuttonsに vbYesNo を持ってきて、ユーザーに選択させています。
そして、vbQuestion でアイコンを指定しています。
引数ボタンで使用可能な定数一覧

MsgBox関数の戻り値

ユーザーにYes,Noの選択をさせた後、ユーザーの選択を取得しています。
ユーザーの選択したボタンは MsgBox関数の戻り値です。
「はい」が選択されたときには vbYes が戻り値で6が返されます。
「いいえ」が選択されると vbNo が戻り値で7が返されます。
つまり If QMeg = vbYes Thenの部分のコードは、 If QMeg = 6 Thenと書くこともできます。
下図は、選択したボタンと戻り値の関係を表にしたものです。

スポンサーリンク
スポンサーリンク