目障りな一瞬の画面ちらつきを防止したい
エクセルでセルに値を入力する時にスクロールをして、目的のセルを表示させてから文字や数字を入力するのが当たり前ですよね。
当然わざわざ自分自身の目で見ながらセルを移動させるのは非常に非効率で、ボタンひとつワンクリックで目的のセルが移動・表示させることができれば作業効率化できますよね。
このページにたどり着いたということは、ユーザーフォームを使うようになると、同じ思いをしている方だと思います。
コマンドボタンを押すと画面が一瞬ちらつく!
本来は、というよりも、画面の見えないところで並べ替えやデータの抽出などを行ってから、元の画面に戻るようにVBAコードを書いているのに、その作業中の画面が移動して見えてしまう。
VBAコードでの処理のデータ量にもよりますが、ほんの数秒あるかどうかの時には一瞬画面が切り替わりちらついているようになってします。

目障りなので何とかしたいと思いましたよね、だから検索してこのページにたどり着いたと思います。
そこで、Application.ScreenUpdatingで更新停止しよう!
Excel-VBAの書籍には処理内容に合わせて画面表示が更新されて、画面がちらつき処理が遅くなるのを防止するためにScreenUpdatingプロパティを使うと記載されています。
例えば、シート1を表示していてシート2のセルAA1~AZ1000に「1」を入力したら、シート1のセルA1に移動するというコードだけを書くと、下記のようになります。
Sheets(“sheet2”).Select
Range(“AA1:AZ1000”).Value = “1”
Sheets(“sheet1”).Select
Range(“A1”).Select
End Sub
実際にこのようなVBAコードは使いませんが、一瞬画面がちらつきますので、ScreenUpdatingプロパティを使うとちらつきが防止できます。
Application.ScreenUpdating = False
Sheets(“sheet2”).Select
Range(“AA1:AZ1000”).Value = “1”
Sheets(“sheet1”).Select
Range(“A1”).Select
Application.ScreenUpdating = True
End Sub
使い方は簡単で、VBAコード処理の前にApplication.ScreenUpdating = Falseと書いて、画面更新処理を停止します。
最後に(End Sub)の前にApplication.ScreenUpdating = Trueと書いて、画面更新処理を再開(元に戻す)します。

Falseが停止、Trueが再開です。
簡単でしょう!

Excel-VBAを使えば数分かかる作業がたったの1秒で終了しますよ!
コメント