⌚ 2020/12/14 (Mon) 🔄 2024/3/20 (Wed)
VBA高速化テクニック
![VBA高速化テクニック](https://www.sun-m.co.jp/blog/browser-3614768_640.png)
入社して早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点を試してみてください。
問い合わせ
![お申し込みはこちら.png](https://www.sun-m.co.jp/blog/CTA_Button.png)
サン・エム・システム サービス
![詳しくはこちら(OneStopCloud).png](https://www.sun-m.co.jp/blog/OneStopCloud_CTA.png)
![詳しくはこちら(PowerApps).png](https://www.sun-m.co.jp/blog/PowerApps_CTA.png)
![詳しくはこちら(power-automate-desktop).png](https://www.sun-m.co.jp/blog/power-automate-desktop-training-service.png)
![詳しくはこちら(Inc-Resu).png](https://www.sun-m.co.jp/blog/Inc-Resu_CTA.png)