Edited at

【VBA】Excel VBAの隠された機能


隠された機能

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


evaluate command の省略形


Module1.bas

Sub example1()

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

要は、Evaluate("A1") = "example1"と同じです。

※そのため速度が若干遅くなります。私の環境で10000回繰り返すと1秒ほどの差になりました。

time
Range("A1")方式
[A1]方式

1
6.36473[sec]
7.06163[sec]

2
5.87216[sec]
6.82686[sec]

3
5.41562[sec]
6.71710[sec]

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


Module1.bas

Sub example2()

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


列挙型Enum にMin, Max, Count

下記のように、Enum内にEnum自身の変数を使った変数を定義することができます。

※Min, Max, Count はあくまで例です。実際の名前は何でもいいです。


Module1.bas

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


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