ホーム>スクールからのお知らせ>VBA>エクセルVBA:マクロの処理速度を上げる(1)
VBA

エクセルVBA:マクロの処理速度を上げる(1)

おはようございます。東武スカイツリーライン草加駅徒歩3分のパソコン教室・エクサパソコンスクールです。

エクセルの業務をマクロで処理するようになると、おどろくほど効率化されます。

三日かかっていた仕事が三分でできるようになっても、慣れてしまうとその三分が長く感じられます。
もっと早くできないかと考え始めます。

いろいろとスピードアップの方法はありますが、今日は手始めに「ScreenUpdating」プロパティを紹介します。 

縦や横に長いシートを処理したり、複数のシートを切り替えながら処理したりすると、画面の書き換えが頻繁に起きます。
描画に時間がかかってしまうので、時間がかかってしまいます。
このプロパティを使って、画面の更新をしないようにして処理速度を上げます。

Application.ScreenUpdating = False  このように記述して画面の更新を止めます。
一連の処理が終わった後には、
Application.ScreenUpdating =True  画面の更新を再開します。
このように、セットで使用してください。

次の動画で、その効果を実感してください。

この動画で使用しているプロシージャのソースです。
※VBA初心者の方には難しく感じるかもしれません。エクサのVBA入門コースでしっかり学べば自分で簡単に書けるようになりますよ!

 

Sub Screen02()
    Dim Data As Long
    Dim i As Long
    Dim j As Long
    Dim startTime As Single
    Dim endTime As Single
    Dim processTime As Single

    Application.ScreenUpdating = False
   
    startTime = Timer      

   Range("A1").Select 

    For j = 1 To 10
        For i = 1 To 500
            Data = Data + 1
            ActiveCell.Value = Data
            ActiveCell.Offset(1).Select
        Next
        Cells(1, j + 1).Select
    Next 

    Application.ScreenUpdating = True  

    endTime = Timer

    processTime = endTime - startTime

    MsgBox Round(processTime, 2) & "秒かかりました"

End Sub

トラックバック(0)

トラックバックURL: http://www.active-network.jp/cgi-bin/mt/mt-tb.cgi/75