【VBAで感動する瞬間⑦】Application.ScreenUpdating = False は“おまじない”

記事
学び
こんにちは。  
ごんた@VBAレッスン です。

お読みいただき本当にありがとうございます😊  
今日は、VBAを学び始めた方が必ず一度は通る「画面チカチカ問題」についてお話しします。

■ マクロがチカチカする…とりあえず“おまじない”を入れていた頃

マクロを実行すると画面が切り替わってチカチカ…。  
ネットで調べると、だいたいこう書いてあります。

```vba
Application.ScreenUpdating = False
```

「とりあえず入れとけば速くなるらしい」  
そんな“おまじない”のように使っていた時期が、私にもありました。

でも今は、まったく使っていません。

なぜなら、  
チカチカの原因は“階層の理解不足”だった
と気づいたからです。


■ チカチカの正体は「階層を意識していないコード」

例えば、こんなコード。

```vba
Range("A1").Value = "こんにちは"
```

これは  
「アクティブなシートのA1」 
という意味です。

- どのシートか指定していない  
- .Select や .Activateを多用して画面が切り替わる  
- 結果としてチカチカする  

つまり、  

画面が動いているのではなく、コードが画面を動かしている

ということなんです。


■ おまじないでごまかしていた頃の自分

当時の私は、

- とりあえず ScreenUpdating = False を入れる  
- なんとなく速くなった気がする  
- でも根本原因は分かっていない  

こんな状態でした。

効果はあるけれど、  
「なぜ必要なのか」を理解していないまま使っていた
というのが正直なところです。


■ 今は「正しく指定する」ことでチカチカしない

階層を意識して書くようになってから、  
画面がチカチカすることはほぼなくなりました。

```vba
Worksheets("名簿").Range("A1").Value = "こんにちは"
```

- どのシートか明示する  
- .Select や .Activate を使わない  
- 必要な場所に直接書き込む  

これだけで、  
ScreenUpdating = False が不要になる
ということに気づいたんです。


■ ネットの“おまじないコード”に惑わされないでほしい

ネットには便利なコードがたくさんありますが、  
その中には「理由が分からないまま使われているもの」も多いです。

大事なのは、

なぜ必要なのか”を理解すること。

遠回りに見えて、これが一番の近道です。


■ まとめ

- 画面チカチカの原因は「階層を意識していないコード」  
- .Select や .Activate が画面を動かしている  
- ScreenUpdating = False はおまじないではなく、本来は最適化のための設定  
- 階層を正しく指定すれば、ほとんど不要になる  
- 理由を理解して書くと、コードは一気に安定する  

私も昔は「とりあえず入れとこ」で書いていました。  
でも、階層を意識するようになってから、  
おまじないに頼らなくても動くコード が書けるようになりました。


🌱 VBAを学び始めた方へ。  
基礎からしっかり、安心して学べるレッスンはこちら!

次回も「なるほど!」と感じられる内容をお届けします。  
また次の記事でお会いしましょう😊

サービス数40万件のスキルマーケット、あなたにぴったりのサービスを探す ココナラコンテンツマーケット ノウハウ記事・テンプレート・デザイン素材はこちら