【ExcelVBA】クラス名やオブジェクト名が正しく表示されない場合の対処方法


この記事はプロモーションを含みます。

ExcelVBA

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」などに修正する必要があります。

対処方法は以上です。

コメント

タイトルとURLをコピーしました