なんだかGoodVibes

日々の勉強メモです。

エクセルの下部にステータスバーを表示する

マクロの処理で時間がかかる時に、実行中を示す
ステータスバーを表示する方法です。

Application.StatusBar = "処理中…"
' 処理を実行
Application.StatusBar = False

Application.StatusBar = False を指定するまでステータスバーが表示されます。
全体のうちどこまで進んだのかを表示したいときは以下です。

Dim max As Long
max = 2000

Dim rowIdx As Long
For rowIdx = 1 To max
    DoEvents
    Application.StatusBar = " 処理を実行中…(" & rowIdx & "/" & max & ")" & _
                                    String(Int(rowIdx / max * 10), "■")

    ' 処理を実行
Next
Application.StatusBar = False

上記のサンプルでDoEvents をしているのは
処理が重い場合に、ステータスバーの表示が固まってしまうことがあるからです。
比較的処理が軽い場合は、DoEvents なしでもOKです。