はじめに
ひらちんです。
セルの値の更新やシートや行・列の挿入削除など、プログラム実行時には、画面の更新が高速で行われますね。
それが好きって方もいると思いますが、ちらついて嫌だな~と思う方もいるかと思います。
今回は、プログラム実行時の画面の更新を止める方法を紹介します。
ScreenUpdatingプロパティ
画面の更新を止めるには、ApplicationオブジェクトのScreenUpdatingプロパティの値を”False”に設定します。
Application.ScreenUpdating = False
Falseに指定したところから、画面の更新が止まります。
更新を再開した場所で”True”に戻します。
Application.ScreenUpdating = True
簡単ですね(^o^)
では動作を確認してみましょう。
A1セルに0から10000の数値を順番に入力するプログラムです。
まずは、画面更新を止めないバージョン
Sub sample()
    'A1セルに0から10000までの数値を入れる
    
    Dim i As Long
    For i = 0 To 10000
    
        'セルに入力
        Range("A1") = i
        
        'イミディエイトウィンドウに表示
        Debug.Print i
    
    Next
    
End Sub普通ですね。
A1セルへの値の入力があるたびに、表示されているのが分かります。
それでは、ScreenUpdatingを”False”に設定して、画面の更新を止めましょう。
コードの最初でFalse、最後にTrueで設定します。
Sub sample()
    '画面の更新を止める
    Application.ScreenUpdating = False
    'A1セルに0から10000までの数値を入れる
    
    Dim i As Long
    For i = 0 To 10000
    
        'セルに入力
        Range("A1") = i
        
        'イミディエイトウィンドウに表示
        Debug.Print i
    
    Next
    '画面の更新を再開する
    Application.ScreenUpdating = True
    
End Subイミディエイトウィンドウで処理は行われているのは分かりますが、処理中は画面の更新が行われていないので、シート上は変化が有りません。
A1セルの値が”10000”になった時点(処理が終わった時点)で画面の更新が行われるので、突然10000が入力されたように見えます。
画面のチラつきがなくなるので、プログラム実行時もスマートな感じに出来ますよ(^o^)
動作も早くなる場合があるので試してみてください。

 
  
  
  
  
コメント