次の方法で共有


Application.CurrentObjectName プロパティ (Access)

CurrentObjectName プロパティと Application オブジェクトを使用して、アクティブなデータベース オブジェクトの名前を決定します。 アクティブなデータベース オブジェクトは、フォーカスを持つオブジェクト、またはコードが実行されているオブジェクトです。 読み取りのみ可能な String 値です。

構文

CurrentObjectName

expressionApplication オブジェクトを 表す変数。

注釈

CurrentObjectName プロパティには、アクティブ オブジェクトの名前を表す文字列式が Microsoft Office Access により自動的に設定されます。

アクティブ オブジェクトとして扱われるオブジェクトは、次のとおりです。

  • アクティブ オブジェクトがプロパティ シート、コマンド バー、メニュー、パレット、またはオブジェクトのフィールド リストの場合、 CurrentObjectName プロパティは、基になるオブジェクトの名前を示します。

  • アクティブ オブジェクトがポップアップ フォームの場合、 CurrentObjectName プロパティは、ポップアップ フォームが開かれた元のフォームではなく、ポップアップ フォーム自体を指し示します。

  • データベース ウィンドウでオブジェクトが選択されている場合、 CurrentObjectName プロパティの値は、選択されているオブジェクトの名前になります。

  • オブジェクトが選択されていない場合、 CurrentObjectName プロパティは、長さ 0 の文字列 ("") を示します。

  • 現在の状態があいまいな場合 (アクティブなオブジェクトがテーブル、クエリ、フォーム、レポート、マクロ、またはモジュールではありません)、たとえば、ダイアログ ボックスにフォーカスがある場合、 CurrentObjectName プロパティはダイアログ ボックス名を返します。

このプロパティを SysCmd メソッドと共に使用して、アクティブなオブジェクトとその状態を確認します (たとえば、オブジェクトが開いている場合、新規である場合、または変更されたが保存されていない場合など)。

次の例では、SysCmd 関数と共に CurrentObjectType プロパティと CurrentObjectName プロパティを使用して、アクティブなオブジェクトが Products フォームであるかどうかを判断し、このフォームが開き、変更されたが保存されていないかどうかを判断します。 これらの条件が true の場合、フォームは保存され、閉じられます。

Public Sub CheckProducts() 
 
 Dim intState As Integer 
 Dim intCurrentType As Integer 
 Dim strCurrentName As String 
 
 intCurrentType = Application.CurrentObjectType 
 strCurrentName = Application.CurrentObjectName 
  
 If intCurrentType = acForm And strCurrentName = "Products" Then 
 intState = SysCmd(acSysCmdGetObjectState, intCurrentType, _ 
 strCurrentName) 
 
 ' Products form changed but not saved. 
 If intState = acObjStateDirty + acObjStateOpen Then 
 
 ' Close Products form and save changes. 
 DoCmd.Close intCurrentType, strCurrentName, acSaveYes 
 End If 
 End If 
End Sub

サポートとフィードバック

Office VBA またはこの説明書に関するご質問やフィードバックがありますか? サポートの受け方およびフィードバックをお寄せいただく方法のガイダンスについては、Office VBA のサポートおよびフィードバックを参照してください。