VBAの高速化(その1)
VBA・マクロを簡単に高速化する方法その1
- エクセルではVBA・マクロで気軽に大量データ処理を行うことが可能です。しかし大量データに対し複雑な処理を行うと処理時間に10時間以上も要するケースも出現します。
- 極めて簡単にVBA・マクロの処理スピードアップを図る方法を説明させて頂きます。
VBA・マクロを簡単に高速化する手順
VBA・マクロの先頭付近に次の3行を追加する :
- Application.ScreenUpdating = False
- Application.EnableEvents = False
- Application.Calculation = xlCalculationManual
VBA・マクロの最後付近に次の3行を追加する :
- Application.ScreenUpdating = True
- Application.EnableEvents = True
- Application.Calculation = xlCalculationAutomatic
夫々の意味と注意点は次の通りです :
- Application.ScreenUpdating = False およびApplication.ScreenUpdating = True
- これは画面の更新を抑制(False)、復活(True)するものです。抑制されている間は画面が全く更新されません。もし途中で画面更新が必要になる場合は途中に復活、抑制を挟むことで更新することができます。
- Application.EnableEvents = False およびApplication.EnableEvents = True
- これはイベントの発生(セル内容の更新、シートのActive化等による引き金)を抑制(False)、復活(True)するものです。抑制されている間はイベントが発生が通知されません。もし途中でイベント発生による処理が必要な場合は途中で復活、抑制を挟むことでイベント発生による処理を行わせることができます。
- Application.Calculation = xlCalculationManual およびApplication.Calculation = xlCalculationAutomatic
- これはセルの自動計算を抑制(xlCalculationManual)、復活(xlCalculationAutomatic)するものです。抑制されている間はセルの内容が更新されても、それに関連するセルの自動計算が行われません。もし途中で自動計算処理が必要な場合は途中で復活、抑制を挟むことで自動計算処理を行わせることができます。