2011-02-09 10 views
0

一部のブックで実行されているマクロとその進行状況を示すステータス画面が表示されるため、ユーザーは空白の画面やExcelの読み込み画面を凝視する必要がありません。それともそうです。ステータスページは機能し、マクロの実行に合わせて更新されますが、マクロの実行が終了するまではExcelは表示されません。ステータス画面を表示するにはどうすればいいですか?VBA Excel 2010で待機画面を表示する方法

status = "SheetName" 

Private Sub Workbook_Open() 
    'Make sure that the screen is active 
    Sheets(status).Activate 
    Sheets(status).Select 
End Sub 

答えて

1

ステータス画面の目的が、マクロの実行中に何らかのフィードバックを送信するだけのものであれば、ステータスバーを使用することも簡単です。ここにサンプルがあります:

Sub YourMacro() 
    Dim StatusOld As Boolean, CalcOld As XlCalculation 

    ' Capture Initial Settings 
    StatusOld = Application.DisplayStatusBar 

    '  Doing these will speed up your code 
    CalcOld = Application.Calculation 
    Application.Calculation = xlCalculationManual 
    Application.ScreenUpdating = False 
    Application.EnableEvents = False 

    On Error GoTo EH 

    ' Your code... 

    ' Every so often while your code is running 
    Application.StatusBar = "Something Useful..." 

    ' After all your code is done 
CleanUp: 
    ' Put things back like they were 
    Application.StatusBar = False 
    Application.Calculation = CalcOld 
    Application.DisplayStatusBar = StatusOld 
    Application.ScreenUpdating = True 
    Application.EnableEvents = True 
Exit Sub 
EH: 

    ' Your error handler... 

    GoTo CleanUp 
End Sub 
0

各更新(VBA命令)後にDoEventsを呼び出す必要があります。そうすれば、プロセッサ時間を即座にExcelに戻すことができ、それを使って画面を再描画します。これは、ユーザーがスプレッドシートをクリックして物事を混乱させるため、少し注意する必要があります。

関連する問題