
Photo by yulinar rusman on Unsplash
どうもマサヤです!
・マクロを高速化するコードって何があったっけ?
・簡単に高速化出来るコードあったよな~
マクロ作っているとたまに忘れることありますよね)笑
コード忘れちゃったからコードだけ知りたい!
そんなアナタと私のための高速化できるコードを紹介していきます。
忘れた時にどうぞ!コピペしてお使いください。
画面更新を非表示にする:Application.ScreenUpdating
セルへの読み込みや書き込み回数が多いときに抜群の効果を発揮してくれるコードです。
有名ですよね。私もかなりの頻度でお世話になってます。
Application.ScreenUpdating = False '更新を無効 Application.ScreenUpdating = True '更新を有効
イベントを抑制する:Application.EnableEvents
イベントトリガーによる負荷を軽減し高速化できます。
高速化だけでなく意図的にイベントを制御したいときにも使います。
Application.EnableEvents = False 'イベントを無効 Application.EnableEvents = True 'イベントを有効
自動計算を停止する:Application.Calculation
これも有名ですね。数式をたくさん使っているExcelに効果的ですね!
ファイルサイズが大きいExcelを開くときにもたまに使用します。
手動計算にしてから起動すると少し速くなります。
ファイルサイズを小さくする努力などは言わない方向で)笑
Application.Calculation = xlCalculationManual '手動計算 Application.Calculation = xlCalculationAutomatic '自動計算
ステータスバーを無効にする:Application.DisplayStatusBar
重い処理するやそもそもファイルサイズが大きい場合、ステータスバーを無効にします。
地味に速くなりますよね。
Application.DisplayStatusBar = False '無効 Application.DisplayStatusBar = True '有効
まとめて無効したい!コピペでご使用ください。
いやいや、さっくり全部無効にしたいんだけど・・・私もそう思います。
なので、一まとめにしたコードを置いておきます。
どうぞサクッとコピーしてご使用してください!
◆ 無効 ◆
With Application .ScreenUpdating = False .EnableEvents = False .DisplayStatusBar = False .Calculation = xlCalculationManual End With
◆ 有効 ◆
With Application .ScreenUpdating = True .EnableEvents = True .DisplayStatusBar = True .Calculation = xlCalculationAutomatic End With
関数にしたものも用意しました。
コードを見やすくしたい・・・そんなアナタために関数にしました!
関数名は微妙なので変更していただくことをお勧めします)笑
Sub SpeedUp(flg) If flg Then With Application .ScreenUpdating = True .EnableEvents = True .DisplayStatusBar = True .Calculation = xlCalculationAutomatic End With Else With Application .ScreenUpdating = False .EnableEvents = False .DisplayStatusBar = False .Calculation = xlCalculationManual End With End If End Sub
呼び出し方は以下となります。
Call SpeedUp(False) ’無効 ’ここに処理 Call SpeedUp(True) ’有効
まとめ
コードだけを紹介したかったので、文章は控えめにしました。
今回は手軽に高速化できるコードを紹介しました。備忘録に近いですしね。
簡単さを除けば、高速化の方法は他にも色々あります。
例を挙げるとセル範囲を2次元配列にまとめて格納して処理する方法があります。
この方法は私を救ってくれたといっても過言ではありません。
残業時間をどれほど削ってくれたことか!感謝しかありません。
いつかアナタにも紹介しますね。
コメント