時間のかかる処理をステータスバーで進捗表示
時間のかかるプログラム処理中にユーザーが不安にならないために、実行中であることや残り時間の目安を知らせるためのステータスバーです。ステータスバーというのはエクセルの最下段の部分です。
埋め込み方
たった1行でできる簡単なコードです。
Application.statusbar = "実行中" & String(i, "■") & String(10 - i, "□")
を各所に追記するだけです。
Sub statusbar()
Dim i As Integer
For i = 1 To 10
Application.statusbar = "実行中" & String(i, "■") & String(10 - i, "□")
Application.Wait [Now()+"00:00:00.2"] 'ここに処理の長いプログラム サンプルは0.2秒待つ
Next i
Application.statusbar = False 'ステータスバーを非表示
End Sub
モーダルなユーザーフォームよりも軽く、アクティブなシートが読み込めず発生するエラーも回避できます。そもそもシートを指定していないコードはよくないのですが、前任者の作った既存プログラムのメンテナンス等だとすべてを修正するのに時間がかかり、他に影響があると嫌なのであまり触りたくないことがあります。