VBAの Sgn 関数で配列の未割り当てをチェックしている場合に、内部エラーが発生する。
■ サンプルコード
Dim arr() As String
If Sgn(arr) = 0 Then Debug.Print 0
■ エラーメッセージ
「実行時エラー 51、内部エラーです。」
「実行時エラー 51、内部エラーです。」
これは Sgn 関数本来の使い方ではないが、どうやら以前に配列のチェック方法として広まったらしく、MS Office 32bit 環境では そこそこ動いていた。これが Office 64bit だとエラーになる。(※Windows の 64bit のことではない)
言語仕様でない使い方なので、この方法は止めましょう。
Office VBA リファレンス - Sgn 関数
https://docs.microsoft.com/ja-jp/office/vba/language/reference/user-interface-help/sgn-function
https://docs.microsoft.com/ja-jp/office/vba/language/reference/user-interface-help/sgn-function