Excel

【Excel】VBAマクロで処理中の表示(しばらくお待ちくださいメッセージ:進行状況プログレスバー:ステータスバー:動作中)

当サイトでは記事内に広告を含みます

この記事では【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マクロで処理中の表示(しばらくお待ちくださいメッセージ:進行状況プログレスバー:ステータスバー:動作中)について確認しました。

マクロが使えるとかなりの業務効率を上げられるので、この際に覚えていきましょう!