見出し画像

Excel-VBAの意外と知られていない機能tips

元はstack overflow ネタです。個人的に、へーと思ったことをまとめます。

evaluate command の省略形

Sub example1()
   Range("A1") = "example1"
   ' []を使うことで以下のように省略できます。
   [A1] = "example1"
End Sub

​要は、Evaluate("A1") = "example1"と同じです。
※そのため速度が若干遅くなります。私の環境で10000回繰り返すと1秒ほどの差になりました。

ちなみにWorksheetFunctionも省略できるようです。

Sub example2()
   MsgBox [VLOOKUP(A1,A1,1,0)]
End Sub

列挙型Enum にMin, Max, Count

下記コードのように、Enum内にEnum自身の変数を使った変数を定義することができます。
※Min, Max, Count はあくまで例です。実際の名前は何でもいいです。

Private Enum MyEnum
   Default = 0
   First
   Second
   Third
   [_Min] = Default 
   [_Max] = Third 
   [_Count] = [_Max] - [_Min] + 1
End Enum

Sub example3()
   For i = MyEnum.[_Min] To MyEnum.[_Max]
       Debug.Print i
   Next i
   Debug.Print MyEnum.[_Count]
End Sub

列挙型をプロジェクト内で多用していて、かつ、将来的に列挙型の拡張の可能性があれば使えそうですね。


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