VBAと100時間向き合って気づいたこと
VBAは、「Visual Basic for Applications」の略で、MicrosoftがMS Officeの拡張機能として提供しているプログラミング言語。
VBAでのツール作成に費やした100時間で、学んだことや思ったことについて書く。
- Option Explicitを使うと、変数を必ず宣言しないといけなくなる
- 処理の前に
Application.ScreenUpdating = False
Application.EnableEvents = False
Application.Calculation = xlCalculationManual
処理の後に
Application.ScreenUpdating = True
Application.EnableEvents = True
Application.Calculation = xlCalculationAutomatic
を書けば処理が早くなることが多い - 処理を早くしたければselectを使わない
(例)
Range("A1").Copy Range("B1")
A1をB1にコピー Withを使うことによってコードを簡略化できる
フィルターの絞り込みを複数条件でやりたい場合は配列を使う
- 文字の結合は「&」ではなくjoinを使ったほうが圧倒的に処理が早い
- 他人のコードが読めない場合はデバッグで1行ずつ見てみる
- 1から作ることができない場合は、「マクロの記録」でやりたいことをやってみて、生成されたコードをリファクタリングする
結論
調べれば、作れる。
調べればだいたいのものがそこそこのクオリティで作れるという自信がついた。
0.5秒かかっている処理を0.1秒に縮める(そこそこではなく、極限まで処理を早くする)、みたいなことは難しいと思った。