PR
スポンサーリンク

【ExcelVBA】エクセルのステータスバーにマクロの進行状況を表示する方法

スポンサーリンク
エクセルVBA-ステータスバーに進行状況を表示する-アイキャッチ ウィンドウ・アプリケーション
スポンサーリンク
スポンサーリンク
スポンサーリンク

ステータスバーとは

エクセルのステータスバーとはウィンドウの一番下のグレーの枠の部分のことを言います。
ステータスバーの左側の「準備完了」と書いてある部分がありますが、ここにはマクロから任意の文字を表示させることができます。

主な使用方法はマクロで処理している内容や何分の何まで完了など、マクロ処理が動いていることを表示させるために使用することが多いです。

エクセルVBA-ステータスバーとは
スポンサーリンク

ステータスバーに文字を表示する方法

ステータスバーに任意の文字列を表示させる方法は↓のように記述します。

Application.StatusBar = “文字列”

またステータスバーの表示、非表示に切り替える方法は↓のように記述します。

Application.DisplayStatusBar = True ’表示
Application.DisplayStatusBar = False ’非表示

ステータスバーの表示は画面更新を停止(
Application.ScreenUpdating = False)にしていても表示・更新が可能です。
画面更新を停止しているとウィンドウのスクロールやシート・ブックの切り替えが表示されなくなりマクロを高速化するために使用されます。

スポンサーリンク

ステータスバーに進行状況を表示するサンプルマクロ①

ステータスバーにマクロの処理状況を表示させるサンプルマクロを用意しました。

下のマクロでは1行目~500行目までを選択する処理(LoopSample)を5回実行させます。
1回目~5回目まで処理を呼びだすときにステータスバーのメッセージを変化させています。

マクロで実行している内容
①元のステータスバーの表示設定を保存する
②ステータスバーの表示設定をTrueにする
③ステータスバーに進捗状況 1/5:■□□□□を表示させる
 1回目の処理を呼び出す
④ステータスバーに進捗状況 2/5:■■□□□を表示させる
 2回目の処理を呼び出す
⑤ステータスバーに進捗状況 3/5:■■■□□を表示させる
 3回目の処理を呼び出す
⑥ステータスバーに進捗状況 4/5:■■■□□を表示させる
 4回目の処理を呼び出す
⑦ステータスバーに進捗状況 5/5:■■■■■を表示させる
 5回目の処理を呼び出す
⑧ステータスバーの表示設定をFalseにする
⑨元のステータスバーの表示設定を元の表示設定に戻す

Sub Main1()

Dim oldStatusBar As String

    '元のステータスバーの表示設定(True or False)…⓵
    oldStatusBar = Application.DisplayStatusBar
    
    'ステータスバーの表示をTrueにする…⓶
    Application.DisplayStatusBar = True
        
        '処理1…⓷
        Application.StatusBar = "進捗状況 1/5:■□□□□"
        Call LoopSample
        
        '処理2…⓸
        Application.StatusBar = "進捗状況 2/5:■■□□□"
        Call LoopSample
    
        '処理3…⓹
        Application.StatusBar = "進捗状況 3/5:■■■□□"
        Call LoopSample
    
        '処理4…⓺
        Application.StatusBar = "進捗状況 4/5:■■■■□"
        Call LoopSample
    
        '処理5…⓻
        Application.StatusBar = "進捗状況 5/5:■■■■■"
        Call LoopSample
        
    'ステータスバーの表示をFalseにする…⓼
    Application.StatusBar = False
    
    '元のステータスバーの表示設定に戻す…⓽
    Application.DisplayStatusBar = oldStatusBar
    
End Sub

Sub LoopSample()
'Main処理から呼び出されるプロシージャ

    Dim i As Integer
    
    '1行目から500行目までを繰り返す
    For i = 1 To 500
        'セルを選択する
        Cells(i, 1).Select
    Next i
    
End Sub

マクロを実行するとステータスバーに↓のように指定した文字列が表示されます。

エクセルVBA-ステータスバーに進行状況を表示する1個目

マクロを実行していくと↓のようにステータスバーのメッセージが変化していきます。

エクセルVBA-ステータスバーに進行状況を表示する_1

最後はステータスバーの表示設定を元に戻すようにしているので最初と同じ状態になって終わります。

エクセルVBA-ステータスバーの表示を元に戻す
スポンサーリンク

ステータスバーに進行状況を表示するサンプルマクロ②

次は処理名を表示させるイメージのサンプルです。

マクロで実行している内容
①元のステータスバーの表示設定を保存する
②ステータスバーの表示設定をTrueにする
③ステータスバーに処理①を実行中を表示させる
 1回目の処理を呼び出す
④ステータスバーに処理②を実行中を表示させる
 2回目の処理を呼び出す
⑤ステータスバーに処理③を実行中を表示させる
 3回目の処理を呼び出す
⑥ステータスバーの表示設定をFalseにする
⑦元のステータスバーの表示設定を元の表示設定に戻す

Sub Main2()

Dim oldStatusBar As String
    
    '元のステータスバーの表示設定(True or False)…⓵
    oldStatusBar = Application.DisplayStatusBar
    
    'ステータスバーの表示をTrueにする…⓶
    Application.DisplayStatusBar = True
        
        '処理1…⓷
        Application.StatusBar = "処理①を実行中"
        Call LoopSample
        
        '処理2…⓸
        Application.StatusBar = "処理②を実行中"
        Call LoopSample
    
        '処理3…⓹
        Application.StatusBar = "処理③を実行中"
        Call LoopSample
        
    'ステータスバーの表示をFalseにする…⓺
    Application.StatusBar = False
    
    '元のステータスバーの表示設定に戻す…⓻
    Application.DisplayStatusBar = oldStatusBar
        
End Sub

Sub LoopSample()

    Dim i As Integer
    
    '1行目から500行目までを繰り返す
    For i = 1 To 500
        'セルを選択する
        Cells(i, 1).Select
    Next i
    
End Sub

マクロを実行するとステータスバーが↓のように変化していきます。
今何の処理を実行しているのかユーザーに分かりやすいように表示させる使い方です。

エクセルVBA-ステータスバーに進行状況を表示する_2
スポンサーリンク

ステータスバーの色やフォントは変更できるか?

「ステータスバー 色」などのキーワードで検索がよくされているようなので、色やフォントを変更したいと考えている方も多いようですが、残念ながらステータスバーの文字の色やフォントは変更できません。

スポンサーリンク

ステータスバーに表示できる文字数は最大何文字か?

ステータスバーに表示される文字数は、ウィンドウのサイズにもよりますが、私がウィンドウサイズを最大にして試した結果は全角169文字まで表示されました。

170文字以上になると最後が「···」となり、途中までが表示された状態になります。

文字数がオーバーした場合、ウィンドウのサイズに応じて表示できるところまでを表示し、入り切らない部分は「···」となるようです。

文字数をオーバーしていてもマクロのエラーは発生しませんでした。

スポンサーリンク

※コードのコピー利用について

・コードのコピーは自由におこなっていただけます。
・気を付けて作成はしていますがコードには誤りがある可能性があります。
・自身の環境で動作確認をしていますが、すべての方の環境で同様に動くことは保証できません。
・データの破損等の責任は負いかねますのでご自身の責任のもとお使いください。

タイトルとURLをコピーしました