【ExcelVBA】処理の進捗率を表示する(StatusBarプロパティ)

めい
VBAを書いたけど、処理が長時間になっちゃってうずうずする…。
りゅう
こんにちは!りゅう(@ryupong_b)です。
今回は、処理の進捗率を表示する手段である「StatusBar」について解説していきます。
はじめに

プログラムを実行中、処理がどこまで進んでいるか気になったことはありませんか?
今回は、そんな悩みを解決する「StatusBar」を解説していきます!

この記事を読むメリット
  • StatusBarの構文・使い方が分かります。
  • ScreenUpdatingは使えるのか?などの疑問にもお答えします。

StatusBarとは

StatusBarとは、以下の画像の赤枠のことです。
目立たない箇所ではありますが、処理の進捗率を表示するのには充分ですね。

めい
ステータスバーって、これなんだ!
あんまり注目したことなかった…

StatusBarプロパティ

StatusBarプロパティの詳細を解説していきます。

構文

構文

Application.StatusBar = expression

expressionには、StatusBarに表示する文言を指定します。
StatusBarをクリアする場合には False を指定します。

サンプルコード

ループ回数を進捗率として表示する

サンプルコード

サンプルコード
Option Explicit

Public Sub testStatusBar()

    Dim loopCount As Long   ' ループカウンタ

    ' 画面描画の停止
    Application.ScreenUpdating = False

    For loopCount = 0 To 10000

       ' ステータスバーに進捗率を表示させる
        Application.StatusBar = "処理中...(" & loopCount & "/10000件)"

        ' A1セルにループ回数を出力
        Range("A1").Value = loopCount
    Next loopCount

    Application.StatusBar = False

    ' 画面描画の再開
    Application.ScreenUpdating = True

End Sub

実行結果

ScreenUpdating = Falseにて画面描画を止めていたとしても、進捗率が確認できます。

最後に

いかがでしたでしょうか。
本記事テクニックを使用すると、プログラム実行中でも進捗率が見えて非常に便利です。
この記事が、読者さまのお力になれれば嬉しいです!

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

大手外資系コンサルティングファーム勤務。ExcelVBA歴は8年。金融関係のプロジェクトにて約100万レコードを処理するマクロの開発実績あり。ExcelVBAの基礎・応用情報を発信中。

コメント

コメントする

CAPTCHA