2020年9月10日木曜日

[VBA] Sgn 関数で内部エラーが発生

VBAの Sgn 関数で配列の未割り当てをチェックしている場合に、内部エラーが発生する。

■ サンプルコード
Dim arr() As String
If Sgn(arr) = 0 Then Debug.Print 0

■ エラーメッセージ
「実行時エラー 51、内部エラーです。」

これは Sgn 関数本来の使い方ではないが、どうやら以前に配列のチェック方法として広まったらしく、MS Office 32bit 環境では そこそこ動いていた。これが Office 64bit だとエラーになる。(※Windows の 64bit のことではない)

言語仕様でない使い方なので、この方法は止めましょう。