【ExcelVBA】Msgbox関数を使って操作性アップ

ExcelVBA

この記事ではエクセルVBAの初心者向けに「Msgboxの使い方」を紹介しています。

紹介内容

【Excel】VBAのMsgbox関数を使いこなす

こんにちは、Fujiya(@fujiya_xyz)です。

エクセルVBAでメッセージボックスは必ず必要なテクニックです。とても簡単なので是非マスターしましょう。

実際にプログラムを実行していただく方が理解がスムーズだと思い、この記事では「サンプルコード」を書いています。

サンプルコードの実行の仕方がわからないという人は下のリンクに実行方法が書いてありますのでチェックしてみてください。

サンプルコードの使い方

MsgBox関数とは

MsgBox関数を使用すると下のようなメッセージボックスを表示することが出来ます。

メッセージボックスの表示

初めて僕がこのコードを使った時はエクセルと会話をしているような感じでテンションが上がったのを覚えています。

具体的には以下のような感じでコードを組みます。

Sub 見本()
MsgBox "こんな感じです。"
End Sub

結果は下画像。

メッセージボックスの見本

引数を入力することでメッセージのタイトルやアイコン、ボタンなどを使用用途に応じて設定することも出来ます。

「メッセージの表示する位置」や「オリジナルのアイコン」を使うなどはできないので注意してください。そこまでカスタマイズ性は高くないです。

どんな時に使う?

僕が使うことが多いのが「作業の確認」や「エラーメッセージ」を表示するときですね。

実際にはもっと多用途なので一概に説明が出来ない感じです。

具体例だと以前に作成した「名簿リスト作成DIY」のmsgboxにエラーメッセージを表示で書いた内容なのですが、ここでは入力必須のテキストボックスが空欄の場合に”おしらせ表示”をしています。

メッセージの『アイコン』と『ボタン』

ここではメッセージボックスのアイコンとボタンの設定を紹介します。

難しいことはなく、MsgBox関数の引数を指定するだけ。

MsgBox(メッセージ,アイコンorボタンの種類)というカンジで記述します。

アイコンの種類

VBAメッセージボックスのアイコンとボタン

アイコンは「なし」「警告」「注意」「お知らせ」「はてな」の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

実行結果は下画像になります。スペースに注意して記述するのがポイントです。

メッセージの連結

今回の記事は以上になります
最後まで読んでいただきましてありがとうございました。