【VBA】ステータスバーに進捗を表示させるプログラム(Application.StatusBar)
処理に時間のかかるマクロを作ると、あとどれぐらいで終わるのか気になりますよね。
そんなときは、ステータスバーに処理状況を表示させるのがおすすめです。
こんな風にシートの左下に進捗を表示することができます。
今回はステータスバーに進捗を表示させるプログラムを紹介するので活用してみてください。
汎用的なプロシージャにしたので簡単に使い回すことができます。
'ステータスバーに進捗を表示させるプログラム
Sub ShowProgress(progressNum As Long, maxNum As Long)
'''ステータスバーに進捗を表示させる
'''maxNum:最大値
'''progressNum:進捗値
Static staticNum As Long '前回と同じか確認用
''progressNum=maxNumとなったら表示を戻す
If progressNum = maxNum Then
Application.StatusBar = False
staticNum = 0
Exit Sub
End If
Dim tmp As Long
tmp = Int(progressNum / maxNum * 10) 'progressNumを0-10の進捗へ変換
'tmp=0のときは初期値をセット
If tmp = 0 Then
Application.StatusBar = "実行中…" & String(10, "□")
Exit Sub
End If
'前回と同じときはExit
If tmp = staticNum Then Exit Sub
staticNum = tmp
Application.StatusBar = "実行中…" & String(tmp, "■") & String(10 - tmp, "□")
End Sub
Sub Sample()
Dim i As Long
For i = 1 To 10000
'プロシージャの呼び出し
ShowProgress i, 10000
Cells(i, 1) = i
Next
End Sub
上のShowProgressがステータスバーを表示させる汎用プロシージャになります。
最大値と進捗値を渡すと、ステータスバーに10個の四角マーク(■□)を表示します。
進捗値が増えると■の数が増えていきます。
下のSampleが実際に汎用プロシージャを呼び出しているサンプルコードです。
このようにループ処理などで進捗表示をするのに活用してみてください。
マクロを高速化する方法
マクロを高速化する方法については↓の記事をご覧ください。