Enumの謎挙動

Enumの謎挙動

前々から気になっていたこと。

小ネタです。

誤入力防止のための記法

変数名などの誤入力に気づきやすくするために、パスカル記法やキャメル記法を使っている人はかなり多いと思う。

VBAの場合、変数名を、たとえばtooYoungToDieと宣言しておけば、入力時にtooyoungtodieと全て小文字で入力しても、(そんな人はいないと思うが、)TOOYOUNGTODIEと全て大文字で入力しても、改行時や別の行への移動時にVBEが勝手に宣言時の形(この場合だとtooYoungToDie)になおしてくれる。

綴りに間違いがあったら、この自動変換が作用しないので、誤入力に気づきやすい、という寸法だ。

しかし、この法則がEnumの場合だと成り立たない。

Enumの謎挙動

たとえば、

Private Enum Hoge
  hgAho
  hgBoke
  hgKasu
End Enum

このようなEnumを宣言していたとする。

で、このモジュール内のプロシージャで、たとえばhgahoと要素名を全て小文字で入力したとしよう。

どうなるか。

ご覧あれ。

f:id:akashi_keirin:20190828070325g:plain

こうなるのである。

おわりに

この謎挙動によって、致命的に困るということはあまりないと思いますが、知らない間にEnum要素名の見た目が変わってしまっていることがあるので、自作のEnumを使うときは注意しましょう。

以上、小ネタでした。

追伸

あと、これは有名なことかも知れませんが、一応。

自作Enumを使っていると、時々、それこそ何もしていないのに突然

定数式が必要です

エラーを吐き始めることがあります。

それまで問題なく動いていたコードだし、ハイライトされているEnum要素にしても、宣言済みのものなので、軽くパニックになります。

もし、そういう状況に遭遇したら、Enum宣言のPublicPrivateに(またはその逆に)書き換えて、元に戻す、という手法を試みてください。それだけでなおります。