メッセージを改行する
マクロ講座 20回
メッセージに改行コードを挿入
メッセージを改行する&ユーザーに選択させる~MsgBox関数2
画面にメッセージを表示するMegBox関数は、非常に便利な命令です。
でも短いメッセージなら、いいんですが、
長いメッセージの時は、途中で改行するためのコードを記述してやりましょう。
改行に使うコードは数種あり,定数VbNewLineとVbCrLf、またはASCⅡコードのchr(10)、chr(13)、chr(13)&chr(10)を挿入します。
(サンプルファイルは、こちらから 2013マクロ講座20回サンプルデータ)
メッセージを改行する
長いメッセージは、適当な箇所で改行しましょう。
たとえば、ユーザーに質問してますが、質問が長くて読みにくいですね。
たとえば、ユーザーに質問してますが、質問が長くて読みにくいですね。
改行すれば、見やすくなります。
はい(Y)をクリックすると、こんな結果になります。
いいえ(N)をクリックすると、以下のように表示されます。(ヒドイ)
改行するには、定数で入れても、値で入れてもOKです。
Excelでは、同じように表示されます。
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」がいいかもしれません。 現在のプラットフォームに最適ないずれかを使用するというきわめて柔軟性のある定数だからです。
とはいえ、説明を見る限り、どれかひとつを選ぶなら、定数「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と書くこともできます。
ユーザーの選択したボタンは MsgBox関数の戻り値です。
「はい」が選択されたときには vbYes が戻り値で6が返されます。
「いいえ」が選択されると vbNo が戻り値で7が返されます。
つまり If QMeg = vbYes Thenの部分のコードは、 If QMeg = 6 Thenと書くこともできます。
下図は、選択したボタンと戻り値の関係を表にしたものです。