【VBA】処理の進捗率を表示させる方法!StatusBarの使用例

この記事では、マクロ処理の進捗率を表示する方法をご紹介していきます。

 

処理に時間がかかるマクロに記述しておけば、おおよその残り時間を予測することができ、処理終了までの時間を有効活用できるようになるはずです。

 

ぜひやり方をマスターしておきましょう。

 

それではさっそくやっていきます。

 

スポンサーリンク

進捗率表示イメージ

この記事で紹介する内容を実装することで、マクロ実行中にシート左下に以下のような表示を追加することができます。

もっとかっこよく進捗率を表示することもできますが、処理が重くなっては本末転倒なので最小限の情報量にしています。

 

あなたのやりたいことと一致していれば続きをご覧ください。

 

スポンサーリンク

進捗率表示する方法:StatusBarについて

マクロ実行中に進捗率を表示させるには、StatusBarというアプリケーションを使用します。

 

StatusBarの使用方法は以下の通りです。

Application.StatusBar = 表示させる情報

この【表示させる情報】がマクロ実行中にエクセルシートの左下に表示されます。

基本的な使い方は以上です。
とはいえ、これだけではよくわからないと思いますので、実際の使用方法を見ていきましょう。

スポンサーリンク

StatusBarの使用例

今回は非常に繰り返し回数の多いFor文にこのStasus Barを適用してみます。

以下がそのサンプルコードです。

Sub test1()
    Dim i As Integer
    For i = 1 To 500
        '重要なのはここ!
        If i Mod 50 = 0 Then
            Application.StatusBar = "進捗率(" & i / 50 * 10 & "%)"
        End If
        'この辺はどうでもいいところ
        If i Mod 2 = 1 Then
            Sheets(1).Activate
            Cells(i, 1) = i
            Sheets(3).Activate
        Else
            Sheets(2).Activate
            Cells(i, 1) = i
            Sheets(3).Activate
        End If
    Next
    'ここもお忘れなく!
    Application.StatusBar = False
End Sub

 

簡単にコードを解説しておきましょう。

このコードでは、繰り返し回数が500回なので、50回ごとに進捗率を更新させるようにしています。

⇒繰り返し回数のカウンターが50で割り切れたとき(i Mod 50 =0)に進捗率を更新しています。

 

また、i / 50 * 10で500回の繰り返し処理中の何%が終わっているかを計算しています。

そしてその計算結果を、Application.StatusBarで表示させているわけです。

 

前後の文言はあなたの書きたいように適宜変更してみましょう。

 

繰り返し処理中でなくても、コードの要所にこのApplication.StatusBarを記述していおけば、だいたいどのくらい進んでいるかはわかるようになるはずです。

 

ぜひあなたの状況に応じて適宜組み込んでみましょう!

 

また、このApplication.StatusBarを使った場合は、コードの最後に

Application.StatusBar = False

を記述するのをお忘れなく!

 

これを書いていないと、マクロ処理が終わったあとも進捗率が表示されたままになってしまいますので。

 

スポンサーリンク

おわりに

というわけで今回は、マクロ処理の進捗率を表示させる方法をご紹介しました。

 

うまく活用して処理待ち時間を有効活用していきましょう!

 

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

今は仕事中で時間がないかもしれませんが、ぜひ通勤時間中などに他の記事も読んでいただけると嬉しいです。

⇒興味をもった方は【ヒガサラ】で検索してみてください。

確実にスキルアップできるはずです。

 

最後に、この記事が役に立ったという方は、ぜひ応援よろしくお願いします。

↓ 応援ボタン

にほんブログ村 IT技術ブログ VBAへ
にほんブログ村

それではまた!

コメント

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