あいまいな名前が検出されました

識別子が別の識別子と競合します。または、識別子に修飾が必要です。 このエラーの原因と解決策は次のとおりです。

  • 同じ範囲にある複数のオブジェクトが同じ名前の要素を持っています。

    オブジェクト名とピリオドを含めることにより、要素名を修飾します。 次に例を示します。

    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 のサポートおよびフィードバックを参照してください。