【EXCEL VBA】プログレスバーで進捗状況を表示したい

長時間かかる処理を待つ際には、進捗状況が見えたほうがイライラしませんよね。 EXCELには進捗状況を表示するためのコントロールが事前に用意されています。しかし、色々覚えることが多く手軽に利用することができません。そこで、もう少し簡単にプログレスバーを表示する方法を紹介します。

Application.StatusBarで解決する

進捗状況をステータスバーに表示します。表示できるのは文字列のみですが、「20%完了」「32/256 完了」「■■■■■□□□□□ 22/50 進捗状況(44%)」のように表示を工夫することで進捗状況を表示することができます。今回は、以下のようなプログレスバーの表示方法を紹介します。

サンプルプログラムを確認する(コピペOK )

'* @param[in] val 進捗バーの現在値
'* @param[in] max 進捗バーの最大値
Sub showProgressBar(val As Long, max As Long)
    Dim s As String: s = ""
    Dim i As Long
    
    For i = 0 To 9
        s = s & IIf(i < Int(val * 10 / max), "■", "□")
    Next
    
    s = s & " " & val & " / " & max & " 進捗状況(" & Int(val * 100 / max) & "%)"
    
    Application.StatusBar = s
    
End Sub

Sub sample()
    Dim i As Long
    
    For i = 0 To 50
        Application.Wait [Now()] + 200 / 86400000 '200msのWait
    
        Call showProgressBar(i, 50)
    Next

    Application.StatusBar = ""  '最後に空にする

End Sub

コメント

  1. […] 【EXCEL VBA】プログレスバーで進捗状況を表示したい長時間かかる処理を待つ際には、進捗状況が見えたほうがイライラしませんよね。 EXCELには進捗状況を表示するためのコントロールが […]