【検証】ScreenUpdatingを使って処理を速くする方法!
こんにちは!『ルウちゃんのExcel Labo』管理人の@rouxchanblogです!
今回はこのような悩みについて解説します。
ルウちゃん
VBAの処理を速くする方法を知りたい!
どれぐらい速くなるのか知りたい!
この記事でわかるようになること
- VBAの処理を早くする方法
- ScreenUpdatingプロパティの使い方
- どれくらい速くなるのかについての検証結果
目次
ScreenUpdatingとは
早速結論ですが、マクロの処理を速くするには二通りあり、一つがこれから解説する「ScreenUpdatingプロパティ」を使った方法です。
もう一つは配列処理をする方法になりますのでこれは別記事で解説します。
話を戻して、マクロで処理をする時に遅くなる原因として「ワークシートの状態が更新されること」が大きく影響しています。
そこでこの更新を1度止めて、処理が終わってから更新することにより処理を速くすることが可能になります。
どれぐらい速くなるのか
次にScreenUpdatingを使うとどれぐらい速くなるのか検証していきます。
条件はMicrosoftの公式ドキュメントを参考に1列おきに非表示にしていくマクロを使っていきます。
PCのスペックによっては結果が異なることがありますのでご了承ください。
Sub 速度計算()
Dim elapsedTime(2)
Application.ScreenUpdating = True
For i = 1 To 2
If i = 2 Then Application.ScreenUpdating = False
startTime = Time
Worksheets("Sheet1").Activate
For Each c In ActiveSheet.Columns
If c.Column Mod 2 = 0 Then
c.Hidden = True
End If
Next c
stopTime = Time
elapsedTime(i) = Round((stopTime - startTime) * 24 * 60 * 60)
Next i
Application.ScreenUpdating = True
MsgBox "「screen updating on」の場合の経過時間は " & elapsedTime(1) & " 秒です。" & Chr(13) & _
"「screen updating off」の場合の経過時間は " & elapsedTime(2) & " 秒です。"
End Sub
このように結果は倍近く速くなることがわかりました!
「ScreenUpdating」を使ってない時が30秒に対して使った場合は16秒まで短縮されています。
気になる人はコピペしてそのまま試してみてください!
まとめ
今回は「ScreenUpdatingプロパティ」を使って処理を速くする方法を解説しました!
ここまで顕著に差が出るケースは少ないかもしれませんが時間は有限なので是非使ってみてください!
この記事で少しでも皆さんのお役に立てれば幸いです!
忘れないうちにお気に入り登録もお願いします!
ありがとうございました!
コメントはお気軽に!