皆さんは仕事でExcel VBAを使ってマクロを作成したことはありますか?
マクロを作成するときの理由に、
「仕事を効率化したい」
「自動化して、ヒューマンエラーを防ぎたい」
など、いろいろな理由があると思います。
ですが、作成したマクロを同じ部署やチームの方が利用せず、結局効率化できないことも少なくありません。
せっかく作成したのに、使ってもらえないと悲しいですよね。
ですが、その悩みはマクロを作成するときに「MsgBox」を使うことで解消することができるかもしれません。
今回はマクロ作成に欠かせない、「MsgBox」について解説していきます。
MsgBoxを使いこなせるようになって、多くの人が「使いやすい」マクロを作れるよう、スキルを身に着けていきましょう。
MsgBoxとは何?
皆さんは、Excelを使っていて、こんな表示が出てきたことはありますか?
Excelを使っている人なら、誰もが見たことがある画面だと思います。
このメッセージ表記をVBAで表示させるのが、「MsgBox関数」と呼ばれるものです。
「関数」であるので、何かしら引数を入力する必要があります。
MsgBox関数の引数を具体的に見てみましょう
MsgBox(prompt [,bottons][,title])
promptには、メッセージボックスに表示させたいメッセージを記入します。この部分は省略することができません。
[,bottons]、[,title]は省略可能です。
bottonsには、メッセージボックスのボタンやアイコンを表記する定数を記述します。
ボタンとアイコンの定数については、下記の表をご覧ください。
[,title]にはメッセージボックスのタイトルを入力することで、実際表示されるメッセージボックスダイアログのタイトルをつけることができます。
MsgBoxの引数に関してまとめると、下記の図の関係性となります。
なぜMsgBox関数を使うと便利?
MsgBox関数を使いこなせるようになると、マクロ作成の際にとても役立ちます。
私自身もVBAでマクロを作る際はよくMsgBox関数を使用しています。
では、なぜMsgBox関数を使うと、マクロ作成に便利なのか?
その理由は2つあります。
① マクロ処理のチェックポイントとして活用できる。
マクロを作成し、いざ実行してみると一瞬で処理が行われ、マクロが終了したのか?まだ処理中なのかが分からない。または処理は終わったが、想定通りに処理が進んだのか判断しづらいという場合もあるかと思います。
実際に、私もマクロを作成している最中にテストで処理をしてみることもありますが、処理中なのか、終了したのかが分からない場合もあります。
そういったときに、MsgBox関数でメッセージを表示させるようにすることで、処理途中のチェックポイントとなる点でメッセージ表示させることで処理が終わったのか?、処理中なのか?、それともエラーが発生したのかを判断することにも活用することができます。
② マクロ利用者の動線を整えやすい。
仕事でマクロを作成する場合、作成した本人だけでなく、他者が使うこともあります。
その際に、マクロの処理が始まったのか?
また、間違えてマクロを起動してしまった場合にアラートが上がらないと意図しない処理を行ってしまうことにもなります。
他者が作成したマクロをちゃんと使えるように、MsgBox関数を使って、要所要所でメッセージを出すことで、利用者も間違えることなくマクロを使用することができます。
実際どうする?Msgboxの使い方
MsgBoxで「「こんにちは」と表示を出す。
まずはMsgBox関数を使って、実際にメッセージボックスを表示してみましょう。
今回、ここでは「こんにちは」というメッセージを実際に表示してみたいと思います。
では、実際の手順は下記の通りです。
手順①:開発タブからVBEの画面を開く。
手順②:VBEにて、MsgBox関数を記述するプロシージャを作成する。
手順③:MsgBox関数にて「こんにちは」と記述し、メッセージを表示してみる。
では、手順を1つずつ具体的に見ていきましょう。
手順①:開発タブからVBEの画面を開く。
Excelファイルを開き、開発タブから「Visual Basic」(①赤枠部分)をクリックして、VBEの画面を開きます。
VBEの画面を開いたら、「挿入」>「標準モジュール」をクリックして、コードウィンドウを表示します。
【作業手順】
①:VBE画面、上部の「挿入」をクリック
②:標準モジュールをクリック
③:プロジェクトに標準モジュールが追加され、右側に「コードウィンドウ」が表示されます。
手順②:コードウィンドウを表示させたら、VBAのコードを記述するプロシージャを作成します。
【作業手順】
コードウィンドウにて、「sub ○○(作成するプロシージャ名)」と改行し、「End sub」を記入します。
手順③:MsgBoxを使って、「こんにちは」とメッセージ表示してみましょう。
【作業手順】
①:作成したプロシージャにて、「MsgBox”こんにちは”」と記述する。
②:赤枠内➤をクリックし、作成したメッセージボックスが表示されることを確認しましょう。
メッセージボックスに「はい」、「いいえ」を表示させる。
MsgBoxで実際にメッセージを表示を前述では行いました。
今度は、メッセージボックスに「はい」、「いいえ」のボタンを表示させてみましょう。
実際の手順は下記の通りです。
手順①:作成したプロシージャにて「MsgBox”○○’(任意のメッセージ)”, vbYesNo」と記述する。
手順②:実行ボタンをクリックし、実際にメッセージが表示されるか確認します。
実際のマクロでMsgBoxを使うと?
ここまでは、MsgBoxのみをコードに記載して実行してきました。
ですが、実際のマクロでMsgBoxを使用する場合、どのようにコードを記述すればいいのでしょうか。
今回は、前回の記事で「マクロの記録」を用いて作成した書式変更マクロを例に、MsgBoxを加えたマクロに修正したいと思います。
まずは、書式変更マクロのコードを見てみましょう。
このコードのマクロを起動すると、下図のように選択したセルの書式を一括で変更します。
一見、何の問題も内容に見えますが、このマクロには欠点があります。
それは…
・「書式変更」ボタンをクリックしても、マクロを開始するメッセージが出ない。
・マクロの処理が終わったら、「処理が完了しました」のような案内メッセージが出ない。
大きくはこの2点があります。
では、この欠点をMsgBoxを使って解決してみましょう。
今回、MsgBoxを使って表示したいメッセージは以下3点です。
①:「書式変更」ボタンをクリックしたら、「書式変更を行います。よろしいですか?」とメッセージを表示したい。
②:①のメッセージにて、「いいえ」を選択した場合、「書式変更をキャンセルしました。」とメッセージを表示したい。
③:①のメッセージにて、「はい」を選択した場合、マクロが処理されて、「書式変更が完了しました。」とメッセージを表示したい。
この①~③の改善を行ったコードとメッセージ表示が下記となります。
コードだけだとわかりづらいので、この書式変更マクロの動作を簡単なフロー図で見ると、下図の流れとなります。
【補足】
実際のマクロでMsgBoxを使う場合、
・マクロの処理フローにおけるチェックポイントはどこか?
・マクロを使う人が使いやすいように動線を整理するにはどうすればいいか
こうしたことを整理する際には、簡単なフロー図も用意してコードの記述や修正・改善もしやすくなります。
私も実際にマクロを作成する場合は、マクロの流れをフロー図に書き出してみることで、全体感を把握してからコードを書くことが多いです。
MsgBoxを使う場面だけでなく、多くの場面でも活用できますので、是非試してみてください。
VBAをさらに学ぶには?
MsgBoxを使った内容について今回解説してきましたが、ほんの1つのスキルに過ぎません。
VBAのスキルを取得することで、さらにExcelで行うことができる幅を広げることができます。
では、どのように学習すればよいのでしょうか…?
私は、Udemyというサイトを活用してExcel VBAの学習を行いました。
Udemyでは、e-ラーニング形式で動画を視聴しながら学習することができます。
コンテンツでは学習しながら実習形式で簡単なアウトプットを繰り返しながら学ぶこともできます。
かつ、「Q&A」という機能を使うことで講師にわからない点を質問することも可能です。
また、コンテンツは サブスクリプション型ではなく、1コンテンツ買い切り型ですので月額費用が掛かるわけではありません。
とはいえ、UdemyでもExcel VBAに関するコンテンツは多くあります。
その中でも「これからVBAについて学習したい。」、「VBAを学び始めたばかり」の方におすすめは、
Excel VBA第1弾エクセルが自動で仕事する!マクロの魔法 文系・非IT職もできるプログラミング
Excel VBA第2弾請求書を1クリックで出力するマクロを作成!文系・非IT職もできるプログラミング
です。
私も「エクセル兄さんのコンテンツ」で学習してみて、実際にExcel VBAでのマクロを作成することができるレベルまでスキルアップすることができました。
VBAについてさらにスキルアップを目指したい方、これから学んでみようと思っている方は是非活用してみてください!
まとめ
マクロを作る際に、高頻度でMsgBoxを使うことになります。
その際に、MsgBoxを使いこなせるようになっているとマクロ作成の効率が上がるだけでなく、利用者もマクロを使いやすくなるメリットもあります。
せっかく作ったマクロを仕事の場面で多くの人に使ってもらえるよう、まずはMsgBoxを使いこなせるよう、この記事を参考にしてもらえると嬉しいです。
コメント