VBAの進行状況をステータスバーに表示する
- yuji fukami
- 2024年1月14日
- 読了時間: 2分
更新日:9月23日
<概要>
今回は、進行状況をステータスバーに表示する汎用プロシージャを紹介します。
作成したプログラムの進行状況をユーザーに知らせるための処理は、時間を要する処理において実装するのはマナーのようなものです。
進行状況、いわゆるプログレスバーは開発者によっていろいろ個性がでるので面白いところですが、私の場合はステータスバーを利用して最小限の情報とコードで実装しています。
<用途>
・時間を要する処理の進行状況をお知らせする。
<プロシージャ紹介>
Public Sub ShowStatusBarProgress(Value As Long, MaxValue As Long, [Divide As Long = 1], [Message As String = ""])
名前:ShowStatusBarProgress/Subプロシージャ
説明:進行状況をステータスバーに表示する
引数
Value ・・・現在個数
MaxValue ・・・全体個数
[Divide] ・・・分割幅(Valueが何回に1回のときにスターテスバーを更新するか)/省略なら1で毎回更新
[Message]・・・表示メッセージ
<実行例>
次のようなコードを記述します。
実行すると左下のステータスバーには次のような表示がされます。

この汎用プロシージャを使用する上での注意点ですが、ループ数が多いときは分割数「Divide」をしっかり指定することです。
「スターテスバーに文字列を表示する」処理自体に処理時間を要するため、デフォルト値で「Divide=1」とするとループ毎にスターテスバーが更新されて余計に処理に時間がかかってしまいます。
ちなみに、今回のように進行状況をお知らせせずに実行するのが一番処理時間が短くてすみます。その代わり「どのくらい進んでいるか」が分からなくなります。それぞれ長所短所ですね。
<コード>



コメント