VBAの画面のちらつきがたった1行で解決して処理高速化する方法

エクセル検索
HOMEUserForm印刷画面ファイル図形
日付・時刻データセル関数VBA関数

エクセルで繰り返し作業を効率よくするためにVBAを活用している時に、コマンドボタンを押したら画面が一瞬スクロールしたりシートが切り替わったりして目障りに思ったことありませんか?

そこでチラつきを解消する「ScreenUpdatingプロパティ」をご紹介しますので、たった1行付け加えれば書き込んだVBAの手順に従ってセルやシートが移動する時に起きるチラつきを防止してくれますよ。

ScreenUpdatingプロパティ

Excel-VBAの画面の操作系のプログラムとして分類されて、VBAに記載した処理手順に合わせてセルやシートが移動するので、画面表示も同じように更新されるので画面がチラついて見え、さらに処理も遅くなります。

この画面更新処理を停止させたり、稼働させたりすることができるのが「ScreenUpdatingプロパティ」です。

ScreenUpdatingプロパティの使い方

使い方は簡単で、既存のVBAコード「Sub()の直後と~End Sub直前に「ScreenUpdatingプロパティ」を使ってあげるだけなので、それぞれ1行ずつ記入するだけなのでとても簡単です。

例えば、シート1を表示していてシート2のセルAA1~AZ1000に「1」を入力したら、シート1のセルA1に移動するというコードだけを書くと、下記のようになります。

VBAコード

Sub 画面更新停止()
Sheets(“sheet2”).Select
Range(“AA1:AZ1000”).Value = “1”
Sheets(“sheet1”).Select
Range(“A1”).Select
End Sub

解説
  1. 画面更新停止という名のプログラムを実行する
  2. シート2を選択
  3. セルAA1~AZ1000の範囲内に「1」を入力したら
  4. シート1を選択
  5. セルA1を選択
  6. マクロ記録終了

実際にこのようなVBAコードは使いませんが、一瞬画面がちらつきますので、ScreenUpdatingプロパティを使うとちらつきが防止できます。

VBAコード

Sub 画面更新停止()
Application.ScreenUpdating = False
Sheets(“sheet2”).Select
Range(“AA1:AZ1000”).Value = “1”
Sheets(“sheet1”).Select
Range(“A1”).Select
Application.ScreenUpdating = True
End Sub

解説
  1. 画面更新停止という名のプログラムを実行する
  2. 画面更新処理を停止する
  3. シート2を選択
  4. セルAA1~AZ1000の範囲内に「1」を入力したら
  5. シート1を選択
  6. セルA1を選択
  7. 画面更新処理を再開する
  8. マクロ記録終了

このようにSub()の直後にApplication.ScreenUpdating = Falseと付け足すと、画面更新処理を停止してから記述したVBAコードに従ってプログラムが作動して、全てのプログラムの作業が終わったらEnd Subの直前にApplication.ScreenUpdating = Trueと付け足して、停止させた画面更新処理を再開(元に戻す)します。

波乗りアヒル

Falseが停止、Trueが再開です。

ScreenUpdatingを使うことにより、ちらつき防止のついでに無駄な更新もなくなるので、VBAコードの処理も早くなるのでセルやシートの移動を伴うVBAコードを記述する時は必ず「ScreenUpdatingプロパティ」を使うほど使用頻度が高いVBAコードです。

ネット情報ではTrueを省略可(マクロ実行終了で自動的に戻る)となっている情報もあり、使い始めた当初は省略していましたが時々フリーズすることがあったので、今は省略せずに必ず記載するようにしてからはフリーズしていません。

波乗りアヒル

使用しているエクセルでは、ほぼすべて画面更新処理を扱う時はこのVBAコードは必ず入れていますので、処理も早くなるのでおススメ処理ですよ。

関連記事

どこかにビューーン
ちょっとの工夫で往復無料の時代が来た!!

新着ページ

よく見られているページ

大容量無料ファイル転送サービス【ACデータ】 無料イラスト【イラストAC】

紅葉スポット

よかったらシェアしてね!
  • URLをコピーしました!