Visual Basic スコープ ルールは、オブジェクト、モジュール、およびプロシージャに対して選択した名前に影響します。
"Form_" または "Report_" で始まる名前をモジュールに付けることはできません。 "Form_" または "Report_" を名前の先頭に付けると、フォームやレポートに記述した既存のコードと競合する可能性があります。
Access バージョン 1. x または 2.0 で作成したアプリケーションのモジュール名がこれらの規則に従っていない場合は、アプリケーションを変換すると Access でエラーが発生します。 たとえば、Access バージョン 1. x または 2.0 のデータベースに Form_Orders というモジュールがあると、変換時にエラーが発生し、モジュールの名前の変更を求められます。
モジュールと同じ名前のプロシージャを作成することはお勧めしませんが、可能です。 アプリケーション内で式からこのようなプロシージャを呼び出す場合は、次の例のように、モジュール名とプロシージャ名の両方を含めた、プロシージャの完全限定名を使う必要があります。
IsLoaded.IsLoaded("Orders")
注意
このコードはマクロの Runcode アクションでは動作しません。 マクロではモジュールと同じ名前のプロシージャを呼び出すことはできません。
フォーム上のコントロールと同じ名前のプロシージャをフォームから呼び出す場合、そのプロシージャを含んでいるモジュールの名前で完全限定してプロシージャを呼び出す必要があります。 たとえば、Utilities という標準モジュール内にある PrintInvoice という名前のプロシージャを呼び出す場合、そのフォームに PrintInvoice という名前のボタンがあれば、フォームまたはフォーム モジュールからプロシージャを呼び出すときに完全限定名を使います。
コントロールに、既存のコントロール名とスペースや記号の部分だけが違っている名前を付けることはできません。 たとえば、"コントロール_ABC" という名前のコントロールがある場合、"コントロール ABC" や "コントロール+ABC" という名前のコントロールを作成することはできません。
タイプ ライブラリと同じ名前のモジュールを保存することはできません。 "ADO"、"Access"、"DAO"、または "VBA" という名前のモジュールを保存しようとすると、既存のモジュール、プロジェクト、またはオブジェクト ライブラリの名前と競合することを示すエラーが表示されます。 同様に、Excel タイプ ライブラリなど、別のタイプ ライブラリへの参照を設定すると、"Excel" という名前ではモジュールを保存できなくなります。
テーブル内のフィールドの名前が、ADO Recordset オブジェクトの ActiveX データ オブジェクト (ADO) メソッドと同じ名前の場合、または DAO Recordset オブジェクトの Data Access Object (DAO) メソッドである場合は、 を使用してレコードセット内の対応するフィールドを参照することはできません。 (ドット) 構文。 を使用する必要があります。 (感嘆符) 構文、または Access によってエラーが生成されます。 次の例は、連絡先というテーブルで開かれたレコードセットで AddNew というフィールドを参照する方法を示しています。
Dim rst As New ADODB.Recordset
rst.Open "Contacts",CurrentProject.Connection, _
adOpenKeySet,adLockOptimistic
Debug.Print rst!AddNew
Dim dbs As Database, rst As DAO.Recordset
Set dbs = CurrentDb
Set rst = dbs.OpenRecordset("Contacts")
Debug.Print rst!AddNew
組み込みの Visual Basic 関数と同じ名前のモジュールを保存すると、その関数を実行しようとすると、Access によってエラーが生成されます。 たとえば、MsgBox という名前のモジュールを保存し、 MsgBox 関数を呼び出すプロシージャを実行しようとすると、エラー "モジュールではなく、予期される変数またはプロシージャ" が生成されます。
以前のバージョンの Access で作成したデータベースに、Access オブジェクト、ADO オブジェクトまたは DAO オブジェクトと同じ名前のモジュールが含まれている場合、そのデータベースを変換するときにコンパイル エラーが発生することがあります。 たとえば、"Form" や "Database" という名前のモジュールがあった場合、コンパイル エラーが発生する可能性があります。 こうしたエラーの発生を防ぐためには、モジュールの名前を変更してください。
レポートのコントロールにバインドされる、またはコントロールまたはレポートの ControlSource プロパティの式で使用されるフィールドをテーブルに作成する場合は、 Application オブジェクトのメソッドと同じ名前の名前をフィールドに割り当てないでください。 Application オブジェクトのメソッドの一覧を表示するには、モジュールのデザイン ビューで [表示] メニューの [オブジェクト ブラウザー] をクリックします。 [プロジェクト/ライブラリ] ボックスの [アクセス] をクリックし、[クラス] ボックスの [アプリケーション] をクリックし、[メンバー] ボックスに Application オブジェクトのメソッドを表示します。
フォームまたはレポートのコントロールに連結するテーブルのフィールドには、AddRef、GetIDsOfNames、GetTypeInfo、GetTypeInfoCount、Invoke、QueryInterface、Release という名前を付けないでください。
Access 97 (以降) で使用される Visual Basic のバージョンには、いくつかの新しい Visual Basic キーワードが含まれているため、これらのキーワードを識別子として使用できなくなります。 次のキーワードは、 AddressOf、 Assert、 Decimal、 DefDec、 Enum、 Event、 Friend、 Implements、 RaiseEvent、 WithEvents です。 以前のバージョンの Access で開発されたデータベースを変換すると、新しい Visual Basic キーワードと同じ既存の識別子によってコンパイル エラーが発生します。 この問題を解決するには、識別子の名前を変更します。
プロジェクト名は、Access アプリケーションの名前である文字列です。 以前のバージョンの Access では、プロジェクト名はデータベースの名前でした。 Access 2000 以降では、プロジェクト名は ProjectName プロパティ設定で指定され、既定の設定はデータベースの名前です。 "アプリケーション"、"フォーム"、"レポート" など、オブジェクトのクラスと同じ名前のデータベースを変換すると、データベース名にアンダースコア文字が追加され、既存のオブジェクトと競合しないプロジェクト名が作成されます。
Office VBA またはこの説明書に関するご質問やフィードバックがありますか? サポートの受け方およびフィードバックをお寄せいただく方法のガイダンスについては、Office VBA のサポートおよびフィードバックを参照してください。