このサイトの記事内では「アフィリエイト広告」などの広告を掲載している場合があります。
消費者庁が問題としている「誇大な宣伝や表現」とならないよう配慮しコンテンツを制作しておりますのでご安心ください。
問題のある表現が見つかりましたらお問い合わせよりご一報いただけますと幸いです。

【VBA】ステータスバーに進捗を表示させるプログラム(Application.StatusBar)

処理に時間のかかるマクロを作ると、あとどれぐらいで終わるのか気になりますよね。

そんなときは、ステータスバーに処理状況を表示させるのがおすすめです。

こんな風にシートの左下に進捗を表示することができます。

今回はステータスバーに進捗を表示させるプログラムを紹介するので活用してみてください。

汎用的なプロシージャにしたので簡単に使い回すことができます。

VBAが難しいと感じたら
VBAのプロに代わりに作ってもらうのはいかがでしょうか?
ココナラでVBAの作成請負を受け付けています。お気軽にご相談ください。

'ステータスバーに進捗を表示させるプログラム

Sub ShowProgress(progressNum As Long, maxNum As Long)
    '''ステータスバーに進捗を表示させる
    '''maxNum:最大値
    '''progressNum:進捗値
    
    Static staticNum As Long '前回と同じか確認用
    
    ''progressNum=maxNumとなったら表示を戻す
    If progressNum = maxNum Then
        Application.StatusBar = False
        staticNum = 0
        Exit Sub
    End If
    
    Dim tmp As Long
    tmp = Int(progressNum / maxNum * 10) 'progressNumを0-10の進捗へ変換
    
    'tmp=0のときは初期値をセット
    If tmp = 0 Then
        Application.StatusBar = "実行中…" & String(10, "□")
        Exit Sub
    End If
    
    '前回と同じときはExit
    If tmp = staticNum Then Exit Sub
    
    staticNum = tmp
    Application.StatusBar = "実行中…" & String(tmp, "■") & String(10 - tmp, "□")
End Sub
 
Sub Sample()
    
    Dim i As Long
    For i = 1 To 10000
        
        'プロシージャの呼び出し
        ShowProgress i, 10000
        
        Cells(i, 1) = i
    Next
End Sub

上のShowProgressがステータスバーを表示させる汎用プロシージャになります。

最大値と進捗値を渡すと、ステータスバーに10個の四角マーク(■□)を表示します。

進捗値が増えると■の数が増えていきます。

下のSampleが実際に汎用プロシージャを呼び出しているサンプルコードです。

このようにループ処理などで進捗表示をするのに活用してみてください。

マクロを高速化する方法

マクロを高速化する方法については↓の記事をご覧ください。

VBAが難しいと感じたら
VBAのプロに代わりに作ってもらうのはいかがでしょうか?
ココナラでVBAの作成請負を受け付けています。お気軽にご相談ください。

VBA

Posted by やろまい