Excel VBAで画面の更新を停止する方法
Excel VBAで画面の更新を停止する方法を紹介します。
1.問題点
まず、Sheet1にコマンドボタンを設置します。
そしてVBEの「Sheet1」に、ボタンをクリックするとSheet2のA1~L30のセルに番号をインクリメントしながら埋め込むというコード(下記)を設定します。
Sub CommandButton1_Click()
Dim cell As Range
Dim counter As Integer
counter = 1
With Worksheets("Sheet2")
For Each cell In .Range("A1:L30")
cell.Value = counter
counter = counter + 1
Next cell
End With
End Sub
ただ、このコードを実行すると、Sheet2に値を埋め込み終わるまでやや時間がかかります。
このサンプルでは値を埋め込むセルの範囲が少ないので数秒まつ程度ですが、処理が複雑になったり、セルの範囲が広がるとそれに比例して待ち時間が長くなる可能性があります。
2.原因
時間がかかる原因は、セルに値を埋め込むたびにSheet2の画面の更新が行われるためです。
3.画面の更新を停止する
画面の更新を停止するには、Application.ScreenUpdatingを利用します。
Sub CommandButton1_Click()
Dim cell As Range
Dim counter As Integer
counter = 1
Application.ScreenUpdating = False
With Worksheets("Sheet2")
For Each cell In .Range("A1:L30")
cell.Value = counter
counter = counter + 1
Next cell
End With
Application.ScreenUpdating = True
End Sub
Application.ScreenUpdatingに「False」を設定すると、画面描画をオフにします。
Application.ScreenUpdating = False
Application.ScreenUpdatingに「True」を設定すると、画面描画をオンにします。
Application.ScreenUpdating = True
このコードを実行すれば、画面描画オフの区間で行われた処理について待ち時間が劇的に短くなります。
Posted by yujiro このページの先頭に戻る
トラックバックURL
コメントする
greeting