ExcelVBAで、Rangeなどのクラス名が「range」や「RANGE」のように正しく表示されなくなった際の対処方法を解説します。
事象
例えば、Rangeクラスですが、稀に「range」や「RANGE」のように、大文字・小文字が勝手に変換される場合があります。
また、修正しても、すぐに間違った記述に変換され、正しい記述に修正することが出来ません。
この記事では、このような事象の対処方法を解説します。
○ 正しい記述例
Dim r As Range
× 誤った記述例
Dim r As range Dim r As RNAGE
原因
原因としては、この事象が発生しているブックのどこかで誤った記述の変数定義、または引数定義が存在しているからです。
一度、誤った記述で変数定義や引数定義を行ってしまうと、この記述に引きずられて勝手に大文字・小文字が変換されてしまいます。
これは、VBAのバグなので、根本的に直す方法はありません。
しかし、誤った記述を正しい記述に戻すことは可能なので、次の対処方法で説明します。
リンク
対処方法
ここでは、対処方法を説明します。
まず、どこかで正しい記述で定義を行います。
Rangeクラスの場合は「Dim Range」と記述します。
これで、Rangeクラスは正しい記述となり、以降も勝手に変換されることはありません。
次に、クラス名やオブジェクト名と同じ変数名が存在する場合は、これを修正する必要があります。
「Dim Range As Range」などの記述がソースコード上に存在する場合は、動作がおかしくなる可能性があります。
なので、これを「Dim r As Range」などに修正する必要があります。
対処方法は以上です。
リンク
コメント