この記事では【Excel】VBAマクロで処理中の表示(しばらくお待ちくださいメッセージ:進行状況プログレスバー:ステータスバー:動作中)について解説していきます。
ポイントとしては、
`ScreenUpdating`、
`StatusBar`、
`DoEvents`
を使用することです。
下記の解説では完全な初心者でもわかりやすいように、変数名を少々変わった名称にしています。
ご活用の際は、適切な英語表記に変更してみてください。
それでは詳しく見ていきましょう!
VBAマクロで処理中の表示(しばらくお待ちくださいメッセージを画面に:すべてのシートの各列の合計を最終行の次に表示させる例で)
それではまず、処理中の表示について解説していきます。
このセクションでは、長時間実行されるマクロ処理中に「しばらくお待ちください」のメッセージを表示する方法を紹介します。
具体的には、ブック上のすべての列の合計を最終行の次に表示させるサンプルにしています。
Sub ShowProcessingMessage()
Dim ws As Worksheet
Application.ScreenUpdating = False
For Each ws In ThisWorkbook.Sheets
Dim saigoGyo As Long
saigoGyo = ws.Cells(ws.Rows.Count, 1).End(xlUp).Row
ws.Cells(saigoGyo + 1, 1).Value = "合計"
Dim gyo As Integer
For gyo = 1 To 10 ' ここで範囲指定
ws.Cells(saigoGyo + 1, gyo).Value = Application.WorksheetFunction.Sum(ws.Range(ws.Cells(1, gyo), ws.Cells(saigoGyo, gyo)))
Next gyo
Next ws
Application.ScreenUpdating = True
End Sub
Alt + F11にてVBE画面を開いて、以下コードをコピペしましょう。
コードのAlt+F8を押し、マクロ選択画面でShowProcessingMessage関数を実行します。
VBAマクロで処理中の進行状況をプログレスバー(ステータスバー)で表示する方法(すべてのシートの各列の平均を最終行の次に表示させる例で)
続いては、進行状況をプログレスバーで表示する方法について解説していきます。
ここでは、各シートの各列の平均値を計算し、最終行の次に表示する例を通じて進行状況の可視化を行います。
Sub ShowProgressWithStatusBar()
Dim ws As Worksheet
Dim totalSheets As Integer
totalSheets = ThisWorkbook.Sheets.Count
Dim sheetIndex As Integer
Application.ScreenUpdating = False
For Each ws In ThisWorkbook.Sheets
sheetIndex = sheetIndex + 1
Application.StatusBar = "進行中... " & Format(sheetIndex / totalSheets, "0%")
Dim saigoGyo As Long
saigoGyo = ws.Cells(ws.Rows.Count, 1).End(xlUp).Row
ws.Cells(saigoGyo + 1, 1).Value = "平均"
Dim gyo As Integer
For gyo = 1 To 10 ' ここで範囲指定
ws.Cells(saigoGyo + 1, gyo).Value = Application.WorksheetFunction.Average(ws.Range(ws.Cells(1, gyo), ws.Cells(saigoGyo, gyo)))
Next gyo
DoEvents
Next ws
Application.StatusBar = False
Application.ScreenUpdating = True
End Sub
Alt + F11にてVBE画面を開いて、以下コードをコピペしましょう。
コードのAlt+F8を押し、マクロ選択画面でShowProgressWithStatusBar関数を実行します。
まとめ VBAマクロで進行状況のプログレスバー表示(ステータスバー:動作中)方法
ここでは、VBAマクロで処理中の表示(しばらくお待ちくださいメッセージ:進行状況プログレスバー:ステータスバー:動作中)について確認しました。
マクロが使えるとかなりの業務効率を上げられるので、この際に覚えていきましょう!