【VBA】現場で学んだVBAのルール


でくわした環境

常駐していた岩本町(現在は西日暮里)のベンチャー企業にて最初の業務でVBAを利用したNxTコムの業務効率化ツールを作成することになった。そこでは独学では学べなかった掟?ルール?アドバイスを教えてもらったのでここにメモします。

Copyメソッドは使わない

copyメソッドはクリップボードにコピーしているので、VBAが動いているときに別作業でコピーしたタイミングとcopyメソッドが動いたタイミングが合致したときにVBAでコピーしたかった値ではなく、別作業でコピーした値をコピーしてしまう恐れがあるらしい。

ActiveSheetやSelectを使わない

Activesheetやselectはクリックで指定いるのと変わらないため、もしVBAが動いているときに他のシートやファイルをクリックした場合、クリックしたシートがActivesheetやselectされていることになるため誤作動を引き起こす原因になると教わった。
ひとつひとつシートを宣言していた↓↓

Dim newOrganization As Worksheet
Set newOrganization = ThisWorkbook.Worksheets(NEW_ORGANIZATION)
Dim newOrganizationCells As Range
Set newOrganizationCells = newOrganization.Range("A1")

On Error GoTo を使うこと

お客様がツールを使用し、VBAでエラーが発生してコードのエラー箇所が表示されても「あ、え?」となるからOn Error GoToで飛ばしてMsgBoxが表示されるようにした。

Application.ScreenUpdatingを使うこと

VBAで処理を開始した際、画面がパカパカするのでこれを使うように言われた。なんか画面更新をまとめてしてくれるとか意味があった気がする。

この記事が気に入ったらサポートをしてみませんか?