【VBA高速化】開始と終了のルーチン呼び出し
記事更新日:2022-12-02
開始・終了・中断
Private calc As Long
'開始
Public Sub StartMacro()
With Application
.ScreenUpdating = False
.DisplayAlerts = False
.EnableEvents = False
calc = .Calculation
.Calculation = xlCalculationManual
End With
End Sub
'終了
Public Sub EndMacro()
With Application
.ScreenUpdating = True
.DisplayAlerts = True
.EnableEvents = True
.Calculation = calc
'.Calculation = xlCalculationAutomatic
End With
'ウェイティングフォームが開いていたら閉じる(必要なら)
If Frm_waiting.Visible Then Unload Frm_waiting
End Sub
'中断
Public Sub AllEnd()
Call EndMacro
End
End Sub
呼び出し側
メインモジュール
Public StartTimer As Double '途中から計測する場合のためにパブリック変数にする
Public Sub Main()
'開始
Call StartMacro
StartTimer = Timer
'〜メインの実行内容〜
'途中でマクロ中断する場合
If (ユーザーフォームでキャンセルボタンが押されたとき等) then
Call EndAll
End If
'終了
Call EndMacro
'終了メッセージ
Dim time As Double: time = Timer - StartTimer
Call MsgEndMacro(time)
End Sub
実行時間の表示
活用方法
マクロ中断するとき
マクロの途中で再計算するとき
2022-12-02
編集後記:
この記事の内容がベストではないかもしれません。