【エクセルVBA】シート上に処理の進捗確認バーを作成する方法

こんにちは、ヒガシです。

 

このページでは、以下の動画のように時間のかかる処理を実施している最中に、シート上に進捗確認バーを作成する方法をご紹介していきます。

どのくらい処理が進んでいるのか確認したい、うまく処理が進行しているか不安という方は実装してみてはいかがでしょうか。

 

それではさっそくやっていきましょう!

 

スポンサーリンク

進捗確認バーを設定する際の前提条件

今回の進捗確認バーは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文中の進捗確認バーを自作する方法をご紹介しました。

処理終了時刻の予測等にぜひご活用ください。

※とはいえこんなものを追加すると全体の処理がとしては遅くなりますのでご注意ください。

 

このように、私のブログではエクセルスキルはもちろん、様々なプログラミングスキルを紹介しています。

ぜひ他の記事ものぞいてみてください。

コメント

タイトルとURLをコピーしました