【Excel VBA】プログレスバーを使用して処理進捗を可視化する方法

目次

プログレスバーとは

プログレスバーとは以下画像のように、進捗によってバーが伸びていくことによって現在の進捗状況を把握できるようなオブジェクトのことです。

マクロを実行した際に処理時間が長い場合、このようなプログレスバーを表示することでユーザに現在の進捗を把握させてストレスを軽減させるといった用途に使用できます。

プログレスバーの使用方法

ツールボックスにプログレスバーを追加

デフォルトではツールボックスの中にプログレスバーが存在しない状態になっています。

このためツールボックスにプログレスバーを追加する設定を行います。

VBエディタの [ツール → その他のコントロール] をクリックします。

以下のコントロール追加画面が表示されるため、リストの中から Microsoft ProgressBar Control, version 6.0 を探し、チェックを入れます。その後 OK をクリックします。

これでツールボックスにプログレスバーが追加されます。

プログレスバーの長さの調整方法

プログレスバーにはプロパティとして Value があります。

Value の値の範囲はデフォルトで 0~100 です。この値によってバーの長さを制御します。
Value 0 で Min の長さ、Value 100 で Max の長さになります。

◆Value = 0 の場合

◆Value = 50 の場合

◆Value = 100 の場合

VBA での Value の設定方法ですが、ユーザーフォーム UserForm1 の中にプログレスバー ProgressBar1 が設置されている場合、以下のように記述します。

    UserForm1.ProgressBar1.Value = <値>

プログレスバーによる進捗表示の活用例

For 文による繰り返し処理を行うマクロがあったとします。

この For 文の一周の処理を行うごとにプロブレスバーの長さを伸ばすという使い方をしてみます。

以下のマクロでは For 文で 50 回の繰り返し処理を行いますが、1回のループごとにプログレスバーの Value を i / 50 * 100(i 回目のループでの進捗率を表す) に更新しています。合わせてユーザーフォーム上のラベルに進捗状況を文字で表示するようにしています。

Sub main()
    Dim i%

    UserForm1.Show vbModeless
    
    For i = 1 To 50
        Application.Wait [Now()] + 0.1 / 86400
        
        UserForm1.ProgressBar1.Value = i / 50 * 100
        UserForm1.Label1.Caption = "進捗" & i & "/50"
        UserForm1.Repaint
    Next
    
    Unload UserForm1
End Sub

このマクロを実行すると以下のようにプログレスバーが表示され、処理が進むごとにバーが伸びていき処理進捗が可視化されます。


あわせて読みたい
Excel VBA マクロ作成用情報まとめ 【初学者向け情報】 【Excel VBA】初心者からマクロを作成できるようになるまでの学習ロードマップ 【Excel VBA マクロ独学者・初心者向け】VBA 学習の第一歩【このペー...
よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

とあるエンジニアです。

当ブログでは Excel VBA のマクロ作成に役立つ情報を中心に情報展開しています。

Excel VBA マクロを使いこなして時短し、人生の質『QOL』を高めていきましょう。

プロフ画像:Copyright (C) SQUARE ENIX CO., LTD. All Rights Reserved.

目次