Excel VBAでメッセージを表示したり、ユーザに入力させたりダイアログボックスについてサンプルで説明します。
ダイアログは以下の内容をカスタマイズ出来ます。
メッセージ表示
ダイアログの表示は下記の構文になります。
MsgBox 表示メッセージ内容, ボタンの種類, タイトル文字列
実際のサンプルを見ってみましょう。
メッセージ表示サンプル1
Sub ShowDialog()
MsgBox "こんにちは!", vbOKOnly, "タイトル"
End Sub
上記のマクロを実行すると次のようになります。
ボタンの種類とタイトル文字列は省略可能で、省略した場合はデフォルトの値が使われます。
メッセージ表示サンプル2
Sub ShowDialog()
MsgBox "こんにちは!"
End Sub
vbNewLineでメッセージを改行出来ます。
メッセージ表示サンプル3
Sub ShowDialog()
MsgBox "こんにちは!" & vbNewLine & "元気ですか?"
End Sub
ボタン種類を変更
上記の例で、ボタンがOKボタン一つしかない、確認や選択肢を設けたい場合もありますね。
2番目のパラメータはOKボタンのみの「vbOKOnly」以外、下記VBAで定義済みのパターンも使えます。
ボタン定義 | 説明 |
---|---|
vbOKOnly | 「OK」のみ |
vbOKCancel | 「OK」と「キャンセル」 |
vbAbortRetryIgnore | 「中止」、「再試行」、「無視」 |
vbYesNoCancel | 「はい」、「いいえ」、「キャンセル」 |
vbYesNo | 「はい」、「いいえ」 |
vbRetryCancel | 「再試行」、「キャンセル」 |
「vbOKOnly」以外の場合、ボタンが二つ以上がありますので、どのボタンが押されたかを判定する必要があります。
各ボタンが押された場合、返り値があります。
定数 | 実際の値 | 説明 |
---|---|---|
vbOK | 1 | 「OK」ボタン |
vbCancel | 2 | 「キャンセル」ボタン |
vbAbort | 3 | 「中止」ボタン |
vbRetry | 4 | 「再試行」ボタン |
vbIgnore | 5 | 「無視」ボタン |
vbYes | 6 | 「はい」ボタン |
vbNo | 7 | 「いいえ」ボタン |
例えば「vbOKCancel」ボタンを使ったダイアログを表示した場合、ボタンは「OK」か「キャンセル」ですので、実際に使う場合には次のようになります。
Sub MessageButton()
Dim ans As Integer
ans = MsgBox("実行しますか?", vbOKCancel, "テスト")
If ans = vbOK Then
MsgBox "OKが押されました"
Else
MsgBox "キャンセルが押されました"
End If
End Sub
アイコン表示
ダイアログに4種類アイコンを表示することが可能です。
アイコン定義 | 説明 | アイコン |
---|---|---|
vbCritical | 警告 | |
vbQuestion | 確認 | |
vbExclamation | 注意 | |
vbInformation | 情報 |
使い方は、ボタン種類の後ろに「+ アイコン種類」で追記
先のメッセージを表示の例で、アイコンを追加してみます。
Sub ShowDialog()
MsgBox "こんにちは!", vbOKOnly + vbInformation, "タイトル"
End Sub
実行すると、メッセージの前にアイコンが表示されます。
入力テキストボックス
ダイアログに入力のテキストボックスを表示し、ユーザに値を入力してもらうことも可能です。
構文は下記のようになっています。
InputBox 表示するメッセージ, タイトル, テキストのデフォルト値
使い方は基本MsgBoxと同じですが、ボタンを変えられないです。OKとCancel固定です。
Sub DialogInput()
Dim ans As String
ans = InputBox("お名前は?", "名前確認", "")
If ans <> "" Then
MsgBox = ans
End If
End Sub