MAIL

平日9:00〜17:30 お問い合わせ

MENU

ブログ BLOG

2020/12/14 (Mon)

VBA高速化テクニック

VBA高速化テクニック
Tips

入社して早2年目、最近の案件でVBAを触ることが多くなって
効率的な組み方を調べていたときに感動した話についてです。

PMOの案件で進捗管理や課題管理等の集計を行う際に、
Excelのマクロで管理するためにVBAを使っていましたが、
データが多く雑な組み方をするとかなり時間がかかってしまいました。

画面の更新をオフ

まずは、画面の更新をオフにすること

    構文
    ―――――――――――――――――――――――――
    Application.ScreenUpdating = False
    ―――――――――――――――――――――――――

ブックを開いてシートを変更してセルの値をコピペするという
単純なマクロでもデータが多いだけでかなり時間がかかりますが、
これを入れておくだけで格段に早くなりました。

無駄なSelect

次は、無駄なSelectをしないこと

    構文
    ―――――――――――――――――――――――――
    Sheets("Sheet1").Select
    Range("A1").Select
    ActiveCell.Copy
     ↓
    Sheets("Sheet1").Range("A1").Copy
    ―――――――――――――――――――――――――

セルやシートを操作する際にわざわざアクティブ化しなくても
直接指定することでこれも格段に早くなりました。
ブックでも同じなのでブックやシートの移動が激しいマクロではかなり有効です。

ワークシート関数

最後に、ワークシート関数を使うこと

    構文
    ―――――――――――――――――――――――――
    WorksheetFunction.関数名(引数)
    ―――――――――――――――――――――――――

簡単な例でいうとセルのある範囲の値で足し算をするときは+演算子よりも
WorksheetFunction.Sum関数を使うとかなり早くなりました

ま と め

以上、3点挙げましたがVBAの高速化の方法はまだまだたくさんあります。
VBAを組んでいて遅いと感じた方は、まずは上記の3点を試してみてください。