![あなた](https://mechanical.konjikilife.com/wp-content/uploads/2023/06/buranko_businessman_sad-e1687666509550-150x150.png)
- メッセージボックスの、使い方が知りたい
- メッセージボックスはに色々あるけど、使い方がよくわからない
![ベル](https://mechanical.konjikilife.com/wp-content/uploads/2023/05/IMG_20220218_122255-150x150.jpg)
意外と多い、メッセージボックスの使い方
実際の入力方法を、見やすくまとめました
はじめまして。普段はメーカーで機械設計をしているベルと申します
この記事は、『入門者のExcelVBA』を参考に書いています
先にメッセージボックス一覧を示し、その後構文の解説をします
メッセージボックス一覧表
メッセージボックスのコードと、その結果を一覧表にまとめました
結果 | コード | |
---|---|---|
![]() | MsgBox “文字だけ” | 基本中の基本。 |
![]() | MsgBox “文字だけ”, vbOKOnly | ボタンの種類を指定する。 書かなくても『OK』ボタンになる。 |
![]() | MsgBox “文字だけ”, vbOKCancel | ボタンが『OK』・『キャンセル』になる。 |
![]() | MsgBox “文字だけ”, vbAbortRetryIgnore | ボタンが『中止』・『再試行』・『無視』になる。 |
![]() | MsgBox “文字だけ”, vbYesNoCancel | ボタンが『はい』・『いいえ』・キャンセル』になる。 |
![]() | MsgBox “文字だけ”, vbYesNo | ボタンが『はい』・『いいえ』になる。 |
![]() | MsgBox “文字だけ”, vbRetryCancel | ボタンが『再試行』・『キャンセル』になる。 |
![]() | MsgBox “文字だけ”, vbOKCancel + vbDefaultButton1 | 選択されているボタンの位置を決める。 コード末尾の数字が、左端のからの位置を示す。 デフォルトで1番目なので、入力不要。 |
![]() | MsgBox “文字だけ”, vbOKCancel + vbDefaultButton2 | ボタンの位置が左端から2番目 |
![]() | MsgBox “文字だけ”, vbYesNoCancel + vbDefaultButton3 | ボタンの位置が左端から3番目 |
![]() | MsgBox “文字だけ”, vbOKOnly, “タイトル” | メッセージボックスのタイトルを変えられる。 タイトルを変えるには、なぜかボタンがデフォルトでよくても、ボタンのコードを入力しなければならない謎仕様。 |
![]() | MsgBox “文字だけ”, vbCritical | メッセージボックスのアイコンを変えられる。 ×印になる。 |
![]() | MsgBox “文字だけ”, vbQuestion | メッセージボックスのアイコンを変えられる。 ?マークになる。 |
![]() | MsgBox “文字だけ”, vbExclamation | メッセージボックスのアイコンを変えられる。 !マークになる。 |
![]() | MsgBox “文字だけ”, vbInformation | メッセージボックスのアイコンを変えられる。 I印になる。 |
![]() | MsgBox “文字だけ”, vbMsgBoxHelpButton | メッセージボックスのボタンにヘルプボタンを追加する。 |
![]() | MsgBox “文字だけ”, vbMsgBoxRight | メッセージボックスの文字を右端に寄せる |
![ベル](https://mechanical.konjikilife.com/wp-content/uploads/2023/05/IMG_20220218_122255-150x150.jpg)
DefaultButtonは、実は4まで用意されていますが、ほぼ使いません
そもそも、VBAのボタンは最大でも3つまで
ヘルプボタンを追加すれば、4つまで増えますが、そこまでボタンを増やすのはナンセンス
実際のメッセージボックスの使い方
![](https://mechanical.konjikilife.com/wp-content/uploads/2024/07/undraw_Manage_chats_re_0yoj.png)
私がメッセージボックスを使うのは、コードの内容が合っているのか、確認するために使います
理由は、「取得したい値が自分の意図した場所なのか?」、コード上でわからない時があるため
例えば、セルの位置を[行×列]以外の方法で、値を取得することがあります
![ベル](https://mechanical.konjikilife.com/wp-content/uploads/2023/05/IMG_20220218_122255-150x150.jpg)
「3行目のC列」のような具体的なセルの番地ではなく、「特定の値から、右に2個移動したところ」のようなイメージ
このとき、本当に自分が思っている”特定の値”
そこから、”右に2個移動したところ”にある、「自分が本当に取得したい値」を取得できているのか、コード上では確認できません
これを確認するために、「自分が本当に取得したい値」が入っているコードを、メッセージボックスに入れます
そうすることで、「自分の書いているコードに間違っていないか?」
これを確認しながらコードを作成するのに、メッセージボックスは有効です
![ベル](https://mechanical.konjikilife.com/wp-content/uploads/2023/05/IMG_20220218_122255-150x150.jpg)
一気にコードを書いてしまうと、意図しない結果が出たときに、どこが間違っているのかわかりません
これを防止するために、1行作ったらテスト
このテストのときに、メッセージボックスが非常に役立ちます
メッセージボックスの多用はNG
![](https://mechanical.konjikilife.com/wp-content/uploads/2024/07/undraw_Mobile_messages_re_yx8w-1024x834.png)
実際にVBAを組んだExcelを運用するとき、メッセージボックスを多用するのはNGです
理由は、ユーザーからすると、メッセージボックスが何度も出てくるのは煩わしいため
例えば、あなたのPCがエラーを起こします
この時、エラーメッセージが何度も出てくると、うっとうしく感じませんか?
このように、メッセージボックスが何度も出てくることに、人はストレスを感じやすいので、多用するのは控えましょう
![ベル](https://mechanical.konjikilife.com/wp-content/uploads/2023/05/IMG_20220218_122255-150x150.jpg)
この記事の参考にしている、『入門者のExcelVBA』でもメッセージボックスの多用は非推奨
メッセージボックスの構文
VBAにおける、メッセージボックスの構文は、下図の通り
![msgboxsentence](https://mechanical.konjikilife.com/wp-content/uploads/2024/07/msgbox-1024x576.png)
![ベル](https://mechanical.konjikilife.com/wp-content/uploads/2023/05/IMG_20220218_122255-150x150.jpg)
上の一覧表を見ても構造がわからない方は、参照してください
これを、日本語訳すると、次のようになります
![msgboxmeaning](https://mechanical.konjikilife.com/wp-content/uploads/2024/07/e5f1179070617b823858e037ede23e3e-1024x576.png)
Helpfileについて
この記事では、MsgBoxの構文に含めていませんが、実際には[Helpfile, Context]というコードも追記できます
[Helpfile]は使うことは稀ですが、解説している記事が少ないので、ここで解説しておきます
[Helpfile]とコードを追加することで、メッセージボックスにヘルプボタンを追加可能
さらに、[Context]で、ヘルプボタンが押された時に開くファイルを設定できます
[Context]には、”.chm”という拡張子のファイルを保管している、パスを入力することで、”.chm”開くことが可能になります
![ベル](https://mechanical.konjikilife.com/wp-content/uploads/2023/05/IMG_20220218_122255-150x150.jpg)
つまり、ヘルプボタンを追加して、押したときに開くファイルを指定できる
ただ、実際にはヘルプボタンを使うことはほとんどありません
あなたが、ExcelやWordのヘルプボタンを押さないのと同じように、設定するだけ無駄
ということで、この記事では見やすさを優先して省略しました
![ベル](https://mechanical.konjikilife.com/wp-content/uploads/2023/05/IMG_20220218_122255-150x150.jpg)
メッセージボックスは、内容・タイトル・ボタンの設定方法だけ使えるようになればOK
まとめ:メッセージボックスの使い方を知りましょう
![](https://mechanical.konjikilife.com/wp-content/uploads/2024/07/undraw_Personal_opinions_re_qw29.png)
VBAでメッセージボックスを使う時には、この記事の一覧表を参考にしてみてください
表を見ても、「どこに何を入れればいいのかわからない」という方は、次の図を見て、メッセージボックスの構文の理解を深めて見ましょう
![msgboxsentence](https://mechanical.konjikilife.com/wp-content/uploads/2024/07/msgbox-1024x576.png)
メッセージボックスの最終目標は、ユーザーに問いかけ、条件分岐をユーザーに決めてもらう
その上で、実行が完了した時の、通知として使うことと思います
そこを目指すためにも、この記事を参考に、いろいろなメッセージボックスを作ってみましょう