MsgBox関数は、メッセージを表示する時に使う関数ですが、工夫次第で使い道がいろいろあります。
これが、一番基本的な使い方になります。
例えば、次のようなプロシージャを作ったとします。
この場合、「処理が終わりました。」というメッセージを表示するだけですが、
処理に時間がかかるプロシージャだと、このメッセージが出てくると安心できます。
Sub test() MsgBox "処理が終わりました。" End Sub |
上の使い方を応用すると、プロシージャが分岐して処理を進めるとき、どの分岐を通って処理が進んでいるのか、調べることができます。
作ったプロシージャがエラーで止まってしまうとき、その原因を特定するときに使うと便利です。
例えば、下のプロシージャだと、番号が表示されるので、どこを通っているのかがすぐにわかります。
Sub test() If a>0 Then If b>0 Then MsgBox "1" Else MsgBox "2" Else If b>0 tThen MsgBox "3" Else MsgBox "4" End If End If End Sub |
MsgBoxは、メッセージを表示させるだけのものではありません。
ユーザーに選択させることもできます。
下のプロシージャの場合、「処理を続けますか?」とメッセージが出て、『OK』か『キャンセル』か
どちらかのボタンを押せるようになっています。
Sub test() Dim t As Integer ←@ t=MsgBox("処理を続けますか?",vbOKCancel) ←A MsgBox t End Sub |
@ 変数の型を宣言する命令です。今回は、整数型でtという変数名で宣言しています。 (扱える数値の範囲は、−32768〜32767です。) A vbOKCancel の部分が、ボタンの指定です。この書式にすると、戻り値があるので、 それを変数tに代入しています。 この場合、OKを押すと1が、Cancelを押すと2が返ってきます。 |
上の使い方をもっと発展させると、押したボタンによって処理を分岐させることができます。
Sub test() Select Case MsgBox("データのチェックをしてから、処理を行いますか?",vbYesNoCancel) ←@ Case Is = vbYes Call データチェック Call 処理 Case Is = vbNo Call 処理 Case Is = vbCancel MsgBox "処理を中断します。" End Select End Sub |
@ Select文を使うと、いろいろな戻り値に対応して、処理を分岐させることができます。 Yesを押すと、プロシージャ「データチェック」を実行し、プロシージャ「処理」を実行します。 Noを押すと、プロシージャ「処理」だけを実行します。 Cancelを押すと、「処理を中断します。」のメッセージが出ます。 ※データチェック・処理というプロシージャは、架空のプロシージャで実際にはありません。 |