Application.CurrentObjectType プロパティ (Access)

CurrentObjectType プロパティを Application オブジェクトと共に使用して、アクティブなデータベース オブジェクト (テーブル、クエリ、フォーム、レポート、マクロ、モジュール、サーバー ビュー、データベース ダイアグラム、またはストアド プロシージャ) の種類を決定します。 アクティブなデータベース オブジェクトは、フォーカスを持つオブジェクト、またはコードが実行されているオブジェクトです。 読み取り専用 AcObjectType

構文

CurrentObjectType

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

注釈

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

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

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

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

  • オブジェクトが選択されていない場合、 CurrentObjectType プロパティは True を返します。

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

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