あいまいな名前が検出されました
識別子が別の識別子と競合します。または、識別子に修飾が必要です。 このエラーの原因と解決策は次のとおりです。
同じ範囲にある複数のオブジェクトが同じ名前の要素を持っています。
オブジェクト名とピリオドを含めることにより、要素名を修飾します。 次に例を示します。
object.property
プログラムのメンテナンスとデバックが難しくなりますが、モジュール レベルの識別子とプロジェクト レベルの識別子 (モジュール名と参照プロジェクト名) がプロシージャで再使用される場合があります。 ただし、同じプロシージャで両方のアイテムを参照する場合は、より広範な範囲を持つアイテムを修飾する必要があります。 たとえば、 が のモジュール レベルで宣言され、プロシージャ レベルの
MyModule
変数がモジュール内で同じ名前で宣言されている場合MyID
、モジュール レベル変数への参照は適切に修飾されている必要があります。Dim MyID As String Sub MySub MyModule.MyID = "This is module-level variable" Dim MyID As String MyID = "This is the procedure-level variable" Debug.Print MyID Debug.Print MyModule.MyID End Sub
モジュール レベルで宣言された識別子がプロシージャ名と競合しています。 たとえば、変数
MyID
がモジュール ベレルで宣言され、プロシージャが同じ名前で定義された場合、このエラーが発生します。Public MyID Sub MyID '. . . End Sub
この場合、一般的なモジュール名による修飾ではあいまい性を解決できないので、名前の 1 つを変更する必要があります。 プロシージャ名は既定でPublicになりますが、変数名は、Publicに指定しない限り、Privateになります。
詳細については、該当する項目を選択し、F1 キー (Windows の場合) または HELP (Macintosh の場合) を押してください。
サポートとフィードバック
Office VBA またはこの説明書に関するご質問やフィードバックがありますか? サポートの受け方およびフィードバックをお寄せいただく方法のガイダンスについては、Office VBA のサポートおよびフィードバックを参照してください。