【VBA道場】#17 画面の更新を停止する

ExcelVBA

【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

サンプルファイル(マクロ有)

今回のマクロはこちらからダウンロードしてご使用いただけます。

 

解説

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

[商品価格に関しましては、リンクが作成された時点と現時点で情報が変更されている場合がございます。]

スラスラ読めるExcel VBAふりがなプログラミング [ リブロワークス ]
価格:2035円(税込、送料無料) (2021/4/22時点)

楽天で購入

 

 

 

VBA逆引き大辞典

[商品価格に関しましては、リンクが作成された時点と現時点で情報が変更されている場合がございます。]

Excel VBA逆引き辞典パーフェクト第3版 [ 田中亨 ]
価格:2838円(税込、送料無料) (2021/4/22時点)

楽天で購入

 

 

タイトルとURLをコピーしました