VBAの実行にある程度時間がかかる場合、実行中かどうかが分かりやすいようにメッセージを出しておく方法をご紹介します。
特定のシートにメッセージ用のセルを作成して、毎回そこに出力するという方法もありますが、今回はユーザーフォームを使って画面上にポップアップのように表示する方法です。
ユーザーフォームを作成する
VBAのプロジェクトからユーザーフォームを作成してください。
今回はフォーム名を「runob」としています。
ユーザーフォーム内にラベルを作成します。
キャプチャやラベルのフォントはプロパティから好きに設定してください。
ユーザーフォームを呼び出すモジュールを作る
モジュール名を「HT_msg_run」として引数にメッセージ内容を格納できるようにします。
Public Sub HT_msg_run(HT_mag_label) 'メッセージ呼び出しモジュール runob.Label1.Caption = HT_mag_label 'メッセージを格納 runob.Show vbModeless 'フォームが開いたままの状態でExcelの操作が可能にする runob.Repaint '更新や操作を有効にする End Sub
出力したい部分の最初と最後に追加する
Sub test() Application.ScreenUpdating = True '画面更新をON Call HT_msg_run("メッセージ") 'ポップアップ出力 Application.ScreenUpdating = False '画面更新をOFF 'ここで処理 Application.ScreenUpdating = True '画面更新をON Unload runob 'ポップアップを閉じる End Sub
Call HT_msg_run(“メッセージ”)で呼び出し、Unload runob で閉じる処理を行っています。
画面更新に関しては必要な場合に挿入してください。
これでメッセージを出したいときに出したいメッセージを出力できるようになります。
ただ、エラー処理等の最後にも「Unload runob」を入れる必要があるケースもありますので気を付けてください。
コメント