VBA

【VBA】ステータスバーにメッセージを表示する

VBAではステータスバーにメッセージを表示できます。
マクロの実行状況や状態を表示することで、マクロの動きがユーザーにもわかりやすくなりますので、マクロの作成に慣れてきたら活用することをオススメします。

それでは、サンプルコードと合わせて解説していきます。

ステータスバーにメッセージを表示する

サンプルコード

1
2
3
4
5
6
Sub ステータスバーにメッセージを表示()
 
    ' ステータスバーにメッセージ表示
    Application.StatusBar = "ステータスバーにメッセージを表示します。"
 
End Sub

実行結果

ステータスバー メッセージ表示

解説

ステータスバーの操作にはApplicationオブジェクトのStatusBarプロパティを使用します。

StatusBarプロパティに値を設定することでステータスバーに文字列を表示することができます。

Application.StatusBar = 任意の値

 

サンプルコードでは『ステータスバーにメッセージを表示します。』と設定(文字列は””で囲みます)

文字列だけでなく、変数や値なども設定することができるので進捗(パーセントやプログレスバーなど)を表示することも可能です。
(進捗表示については【応用編】にて紹介しています)

ステータスバーの復元

ステータスバーに表示したメッセージは、何もしなければ保持されたままになります。
マクロの動作完了後にステータスバーを元に戻したい場合は、”False” を設定することで解除が可能です。

サンプルコード

1
2
3
4
5
6
Sub ステータスバーを復元する()
 
    ' ステータスバーを既定の設定に復元
    Application.StatusBar = False
 
End Sub

実行結果

ステータスバー 復元

【応用編】進捗を表示する

ループを利用して進捗を表示してみましょう。

サンプルコード

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Sub ステータスバーに進捗表示()
 
    Dim i As Long
    Dim r As Long
 
    r = 500       ' ループ回数
 
    ' r回数ループ
    For i = 0 To r
        Application.StatusBar = "進捗状況:" & i & "/" & r & "(" & (i / r) * 100 & "%)"
    Next
 
    ' ステータスバーを既定の設定に復元
    Application.StatusBar = False
 
End Sub

実行結果

ステータスバー 進捗

時間のかかる処理は『応答なし』となる場合があり、動作状況がわからなくなるため、進捗表示することをオススメします。

※ステータスバーが更新されない場合は、ループ回数(r)を増やしてください。

※パーセントではなく”■”を使うことでプログレスバーのように表示することも可能です。