CurrentObjectType, CurrentObjectName Properties

Applies To

Application Object.

Description

You can use the CurrentObjectType and CurrentObjectName properties together with the Application object to determine the type of the active database object (table, query, form, report, macro, or module) and the name of the active database object.

Setting

The CurrentObjectType property is set by Microsoft Access to one of the following Microsoft Access intrinsic constants.

Setting Description
acTable The active object is a table.
acQuery The active object is a query.
acForm The active object is a form.
acReport The active object is a report.
acMacro The active object is a macro.
acModule The active object is a module.


The CurrentObjectName property is set by Microsoft Access to a string expression containing the name of the active object.

These property settings are available only in Visual Basic and are read-only in all views.

Remarks

The following conditions determine which object is considered the active object:

  • If the user chooses the property sheet, toolbar, menu, palette, or the field list of an object, the CurrentObjectType and CurrentObjectName properties return the type and name of the underlying object.
  • If the user chooses a pop-up form, the CurrentObjectType and CurrentObjectName properties refer to the pop-up form itself, not the form from which it was opened.
  • If the active object is the Database window, the CurrentObjectType and CurrentObjectName properties return the item selected in the Database window.
  • If no object is selected, the CurrentObjectType property returns True (-1), and the CurrentObjectName property returns a zero-length string (" ").
  • If the current state is ambiguous (the active object isn’t a table, query, form, report, macro, or module) — for example, if a dialog box has the focus — the CurrentObjectType property returns True, and the CurrentObjectName property returns the dialog box name.

You can use these properties with the SysCmd function to determine the active object and its state (for example, if the object is open, new, or has been changed but not saved).

See Also

Application Object, SysCmd Function.

Example

The following example uses the CurrentObjectType and CurrentObjectName properties with the SysCmd function to determine if the active object is the Products form and if this form is open and has been changed but not saved. If these conditions are true, the form is saved and then closed.


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, acYes
        End If
    End IfSub