VBAでの処理状況をユーザへ伝える手段のひとつとして、
StatusBarを使ったものがある。
・・・という事を、聞いたことがあった。
が、ここ数年VBAを扱う機会がなかったので、
試す機会もなかったところへきて、
VBAを書く生活になったので、早速採用!
書き方としては至って簡単。
サンプルとして、<〇/10>での処理状況を、
エクセル画面の左下へ表示してみたところ。
1秒毎にカウントしていくイメージ。
Sub StatusBar()
Dim i As IntegerFor i = 1 To 10
Application.StatusBar = i & "/10"
Application.Wait Now() + TimeValue("00:00:01")
Next iApplication.StatusBar = False
End Sub
Application.StatusBar = "表示したい内容"
なので、簡単ですね。
最後にFalseを与えておかないと、
VBA処理後も表示が残るところは注意が必要。
例えば、配列の処理に対して進捗状況を追いたい時、
こんな風に書いておくと便利かな、と。
Sub statusbar_array()
Dim myarray(1 To 10) As Integer
Dim i As IntegerFor i = 1 To UBound(myarray)
Application.StatusBar = i & "/" & UBound(myarray)
Application.Wait Now() + TimeValue("00:00:01")
Next iApplication.StatusBar = False
End Sub
配列の要素数に応じて、どの程度の処理を終えているかが
把握できるようになるので、使い道がありそう。
実際には、「表示する=メモリを食う」ので、
そのあたりは注意は必要なのかもしれない。