こんにちは、ヒガシです。
このページでは、以下の動画のように時間のかかる処理を実施している最中に、シート上に進捗確認バーを作成する方法をご紹介していきます。
どのくらい処理が進んでいるのか確認したい、うまく処理が進行しているか不安という方は実装してみてはいかがでしょうか。
それではさっそくやっていきましょう!
進捗確認バーを設定する際の前提条件
今回の進捗確認バーはFor文に対して適用することを想定しています。
というのもFor文なら処理のループ回数があらかじめわかっているため、どのくらいループが進んでいるかを確認できますが、その他の処理だとそもそもどのくらい進んでいるかの指標を算出することができないからです。
あなたのやりたいことと一致していればぜひ続きをご覧ください。
For文のループ進捗を確認するバーの設定方法
前置きが長くなりましたが、以下が冒頭にご紹介した進捗確認バーを設定するVBAコードです。
Sub progress_bar()
Application.ScreenUpdating = True
total_loop = 100
str_bar = "="
For i = 1 To total_loop
str_Percent = Int(i * 100 \ total_loop) & "%"
num_bar = Int(i / total_loop * 10)
If i Mod (total_loop / 10) = 0 Then
str_bar = str_bar & "="
End If
Cells(1, 1) = "progress=" & str_Percent & " " & str_bar & ">"
'ここに実施したい処理を記述する
Application.Wait [Now()] + 0.02 / 86400
DoEvents
Next
End Sub
基本的にはこのコード内にあるFor文中(下から5行目以降)にあなたの実施したい処理を記述する形で追記いただければOKです。
ループ数を変えて実行してみる
それでは先ほどのコードをループ数を変えながら実行してみましょう。
まずは冒頭に紹介した100ループです。
次は500ループにしてみましょう。
問題なく進捗が遅くなってますね。
おわりに
というわけで今回はFor文中の進捗確認バーを自作する方法をご紹介しました。
処理終了時刻の予測等にぜひご活用ください。
※とはいえこんなものを追加すると全体の処理がとしては遅くなりますのでご注意ください。
このように、私のブログではエクセルスキルはもちろん、様々なプログラミングスキルを紹介しています。
ぜひ他の記事ものぞいてみてください。
コメント