【VBA道場】#17 画面の更新を停止する
問題
A1~A500セルに1と入力してください。その間、画面の更新を停止し、処理が終了したら画面の更新を再開してください。
完成見本
解答
Sub vba_doujyou_17()
’変数iを宣言
Dim i As Long
’画面の更新を停止する
Application.ScreenUpdating = False
’1から500まで繰り返す
For i = 1 To 500
’i行目に1を入力
Sheets("Sheet1").Range("A" & i).Value = 1
Next i
’画面の更新を再開
Application.ScreenUpdating = True
End Sub
サンプルファイル(マクロ有)
今回のマクロはこちらからダウンロードしてご使用いただけます。
VBA道場17 サンプルファイル(マクロ有)
1 ファイル 11.38 KB
解説
object.ScreenUpating = True/False ‘画面の更新を再開/停止する
大量の処理をするとき、画面の更新をそのままにしていると処理が遅くなります。
これは、画面の更新に処理の多くを使ってしまうためです。
大量のデータを処理する際は必ず画面の更新を停止してから行うようにしましょう。
まずは、処理を開始する前に、ScreenUpdatingを「False」にします。
Application.ScreenUpdating = False
こうすることで、画面の処理を停止することができます。
そして、A1~A500のセルに1を代入するコードを書きます。
For i = 1 To 500
Sheets("Sheet1").Range("A" & i).Value = 1
Next i
最後は、ScreenUpdatingを「True」にして画面の更新を再開します。
Application.ScreenUpdating = True
これを忘れてしまうと画面が更新されなくなってしまうので、注意しましょう!
おわりに
今回は、画面の更新について学習しました。
今回のように大量な処理を実行する場合は必ず画面の更新を停止しましょう。
処理速度は驚くほど早くなりますよ。
それでは今日はここまで!
おすすめ参考書
Amazon
たった1秒で仕事が片付くExcel自動化の教科書
いちばんやさしいExcelVBAの教本
ExcelVBA逆引き辞典 パーフェクト
楽天
いちばんやさしいExcelVBA
|
すらすら読めるExcelVBA
|
VBA逆引き大辞典
|