Excel VBA では、Application.StatusBar
を使って プログレスバー風の表示を実現することができます。ステータスバーはテキストしか表示できませんが、記号(■、□、= など)を組み合わせて疑似的なバーを作ることで進捗を視覚的に表現できます。
✅ プログレスバー風の基本構成
Application.StatusBar = "処理中: [■■■■□□□□□□] 40%"
- 「■」=進捗済み
- 「□」または「・」=未処理
- パーセンテージをつけるとわかりやすい
🔷 実用コード例:10件の処理をプログレスバー表示
Sub ステータスバーでプログレスバー()
Dim i As Long
Dim total As Long: total = 10
Dim barLength As Long: barLength = 20 ' プログレスバーの長さ(記号の数)
Dim percentComplete As Double
Dim numFilled As Long
Dim progressBar As String
For i = 1 To total
' 進捗率の計算
percentComplete = i / total
numFilled = Round(barLength * percentComplete)
' プログレスバー文字列の作成
progressBar = "[" & String(numFilled, "■") & String(barLength - numFilled, "□") & "]"
Application.StatusBar = "処理中: " & progressBar & " " & Format(percentComplete, "0%")
' 擬似処理(1秒待つ)
DoEvents
Application.Wait Now + TimeValue("00:00:01")
Next i
' ステータスバーを元に戻す
Application.StatusBar = False
End Sub
🔷 出力イメージ(ステータスバー)
lessコピーする編集する処理中: [■■■■■■■■□□□□□□□□] 40%
🔷 コード解説
部分 | 内容 |
---|---|
total | 全処理件数 |
barLength | プログレスバーの表示幅(■+□の合計) |
numFilled | 現時点で表示する「■」の数 |
String(numFilled, "■") | numFilled 個の「■」を生成 |
DoEvents | ステータスバーを即時更新するために必要 |
Application.Wait | 擬似的に時間経過をシミュレート(本来は処理内容を記述) |
🔷 応用:100件など大量処理でもOK
以下のように調整可能です:
total = 100
barLength = 30
※ barLength
を増やすと進捗バーが細かくなり、よりなめらかに見えます。
🔷 エラー対応付きのテンプレート
Sub プログレスバー付き処理()
On Error GoTo エラー処理
Dim i As Long, total As Long
total = 50
For i = 1 To total
Call ShowProgressBar(i, total)
' 実際の処理内容を書く
DoEvents
Application.Wait Now + TimeValue("00:00:05")
Next
正常終了:
Application.StatusBar = False
Exit Sub
エラー処理:
MsgBox "エラー: " & Err.Description
Resume 正常終了
End Sub
Sub ShowProgressBar(ByVal i As Long, ByVal total As Long)
Dim percent As Double, barLen As Long, filled As Long, bar As String
percent = i / total
barLen = 30
filled = Round(barLen * percent)
bar = "[" & String(filled, "■") & String(barLen - filled, "□") & "]"
Application.StatusBar = "進行中 " & bar & " " & Format(percent, "0%")
End Sub
🔷 記号バリエーション
記号 | 見た目の特徴 |
---|---|
■ (全角)と □ | 最も一般的で視認性が良い |
█ (半角) | 細かく表示できるがフォントに依存 |
= と - | 素朴な印象。レガシー対応用 |
● と ・ | 円形で柔らかい印象になる |
🔷 まとめ
特徴 | 内容 |
---|---|
目的 | ステータスバーに進捗バーを疑似表示 |
メリット | ユーザーに処理中であることを明示できる |
実装方法 | String 関数で記号の組み合わせを作る |
更新の工夫 | DoEvents を使って表示更新を保証 |
注意点 | 最後に Application.StatusBar = False を忘れずに! |