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

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

2024年7月24日

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

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

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

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

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

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上級者を目指したい人にはパーフェクトExcel VBA一択です。
この本を読み切れば間違いなくVBA上級者になれます。

created by Rinker
技術評論社
¥3,608 (2024/11/24 20:41:17時点 Amazon調べ-詳細)
VBAが難しいと感じたら
ココナラにてVBAの作成依頼を受け付けています。
ご依頼・ご相談はこちらから

VBA

Posted by やろまい