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

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

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

目次

ScreenUpdatingプロパティ

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

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

ScreenUpdatingプロパティの使い方

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

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

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

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

コピペOK

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

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

波乗りアヒル

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

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

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

写真素材無料【写真AC】

よく見られているページ

新着ページ

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