RickBlog

恩返し

VBAと100時間向き合って気づいたこと

VBAは、「Visual Basic for Applications」の略で、MicrosoftMS 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秒に縮める(そこそこではなく、極限まで処理を早くする)、みたいなことは難しいと思った。