【ExcelVBA】Msgbox関数を使って操作性アップ
この記事ではエクセルVBAの初心者向けに「Msgboxの使い方」を紹介しています。
紹介内容
【Excel】VBAのMsgbox関数を使いこなす
こんにちは、Fujiya(@fujiya_xyz)です。
エクセルVBAでメッセージボックスは必ず必要なテクニックです。とても簡単なので是非マスターしましょう。
実際にプログラムを実行していただく方が理解がスムーズだと思い、この記事では「サンプルコード」を書いています。
サンプルコードの実行の仕方がわからないという人は下のリンクに実行方法が書いてありますのでチェックしてみてください。
サンプルコードの使い方
サンプルコードってどうやって使うの?【エクセルVBA初心者向け】
VBAコードの紹介によくある「サンプルコード」。初心者の人向けに『サンプルコードの実行の仕方』を説明しています。誰でも最初はわからないことだらけなので問題ありません、僕もそうでした。
MsgBox関数とは
MsgBox関数を使用すると下のようなメッセージボックスを表示することが出来ます。
初めて僕がこのコードを使った時はエクセルと会話をしているような感じでテンションが上がったのを覚えています。
具体的には以下のような感じでコードを組みます。
Sub 見本()
MsgBox "こんな感じです。"
End Sub
結果は下画像。
引数を入力することでメッセージのタイトルやアイコン、ボタンなどを使用用途に応じて設定することも出来ます。
「メッセージの表示する位置」や「オリジナルのアイコン」を使うなどはできないので注意してください。そこまでカスタマイズ性は高くないです。
どんな時に使う?
僕が使うことが多いのが「作業の確認」や「エラーメッセージ」を表示するときですね。
実際にはもっと多用途なので一概に説明が出来ない感じです。
具体例だと以前に作成した「名簿リスト作成DIY」のmsgboxにエラーメッセージを表示で書いた内容なのですが、ここでは入力必須のテキストボックスが空欄の場合に”おしらせ表示”をしています。
メッセージの『アイコン』と『ボタン』
ここではメッセージボックスのアイコンとボタンの設定を紹介します。
難しいことはなく、MsgBox関数の引数を指定するだけ。
MsgBox(メッセージ,アイコンorボタンの種類)
というカンジで記述します。
アイコンの種類
アイコンは「なし」「警告」「注意」「お知らせ」「はてな」の5種類があります。
Msgboxアイコンのサンプルコード
Sub アイコン種類()
MsgBox "なし"
MsgBox "警告", vbCritical
MsgBox "注意", vbExclamation
MsgBox "おしらせ", vbInformation
MsgBox "はてな", vbQuestion
End Sub
ボタンの種類
ボタンは6種類あります。使用用途によって選びましょう。
ボタンのサンプルコード
Sub ボタンの種類()
MsgBox "「OK」のみ"
MsgBox "「OK」と「キャンセル」", vbOKCancel
MsgBox "「中止」と「再試行」と「無視」", vbAbortRetryIgnore
MsgBox "「はい」と「いいえ」と「キャンセル」", vbYesNoCancel
MsgBox "「はい」と「いいえ」", vbYesNo
MsgBox "「再試行」と「キャンセル」", vbRetryCancel
End Sub
アイコンとボタンの両方を設定する
両方指定する場合にはMsgBox(メッセージ,アイコン + ボタンの種類)
というカンジで指定します。
Sub アイコンとボタン両方を設定()
MsgBox "このまま登録しますがよろしいですか?", vbExclamation + vbYesNo
End Sub
これを実行すると下のようにアイコンとボタンが指定できるわけですね。
僕はセルを上書きする自動化ツールなどで、登録を確認したい場面に使っています。不備防止です。
メッセージの改行(vbCrLf)
メッセージを改行する場合にはvbCrLf
という演算子を使います。
上画像のサンプルコードは以下です。
Sub Sample()
MsgBox "☆キャンプの持ち物" & vbCrLf & "「ランタン」" & vbCrLf & "「テント」" & vbCrLf & "「チェア」" & vbCrLf & "「テーブル」"
End Sub
タイトルの指定
「タイトル」というのはメッセージボックスの左上に表示されている文字のことです。何も設定しないと『MicrosoftExcel』という表示になっています。
設定をするにはMsgBox(メッセージ,アイコンorボタンの種類,”タイトル”)
というカンジで記述します。
Sub アイコンとボタン両方を設定()
MsgBox "このまま登録しますがよろしいですか?", vbExclamation + vbYesNo, "タイトルを入力します"
End Sub
カンタンですね。
ボタンの「判定」と「分岐」
少し応用になってきますが、メッセージボタンで「どのボタンが押されたのか」を判定することが出来ます。
- vbOK:「OKボタン」が押された
- vbCancel:「キャンセルボタン」が押された
- vbAbort:「中止ボタン」が押された
- vbRetry:「再試行ボタン」が押された
- vbIgnore:「無視ボタン」が押された
- vbYes:「はいボタン」が押された
- vbNo:「いいえボタン」が押された
判定することで処理を分岐することができます。
例えばデータ削除作業の最終確認などに便利です。
以下のサンプルプログラムは「はい」を選ぶとデータを削除、「いいえ」を選ぶとキャンセルのメッセージボックスが表示されるという例。実際にはデータ削除の部分に削除するセル範囲などを指定します。
Sub メッセージボックスの分岐()
削除確認 = MsgBox("削除しますか?", vbYesNo + vbQuestion + vbDefaultButton2, "削除確認")
If 削除確認 = vbYes Then
MsgBox "データを削除します(削除処理を入力)"
Else
MsgBox "削除処理をキャンセルしました"
End If
End Sub
文字列との連結
ExcelVBAでは、文字列や変数の値を連結して使うことが出来ます。
その際には『&(アンパサンド)』という記号を使います。
下のサンプルコードでは、DATE関数(今日の日付)を連結してみます。以下。
Sub 連結()
MsgBox "今日は「" & Date & "」です"
End Sub
実行結果は下画像になります。スペースに注意して記述するのがポイントです。
【エクセルVBA】今日の日付・時間を取得する
エクセルVBAで今日の日付・時間を取得する『DATE関数』『Time関数』『Now関数』を紹介します。データの登録・削除日を自動入力することで速度と正確性がアップします。是非とも習得したい基礎コードです。
今回の記事は以上になります。
最後まで読んでいただきましてありがとうございました。