Compartir a través de


Propiedad Application.CurrentObjectType (Access)

Use la propiedad CurrentObjectType junto con el objeto Application para determinar el tipo del objeto de base de datos activo (tabla, consulta, formulario, informe, macro, módulo, vista del servidor, diagrama de base de datos o procedimiento almacenado). El objeto de base de datos activo es el objeto que tiene el foco o en el que se ejecuta el código. Read-only AcObjectType.

Sintaxis

expresión. CurrentObjectType

expresión Variable que representa un objeto Application.

Comentarios

Las condiciones siguientes determinan el objeto que se considera el objeto activo:

  • Si el objeto activo es una hoja de propiedades, la barra de comandos, menú, paleta o lista de campos de un objeto, la propiedad CurrentObjectType devuelve el tipo del objeto subyacente.

  • Si el objeto activo es un formulario emergente, la propiedad CurrentObjectType hace referencia al formulario emergente en Sí, no al formulario desde el que se ha abierto.

  • Si el objeto activo es la ventana Base de datos, la propiedad CurrentObjectType devuelve el elemento seleccionado en la ventana Base de datos.

  • Si hay ningún objeto seleccionado, la propiedad CurrentObjectType devuelve True.

  • Si el estado actual es ambiguo (el objeto activo no es una tabla, consulta, formulario, informe, macro o módulo), por ejemplo, si un cuadro de diálogo tiene el foco, la propiedad CurrentObjectType devuelve True.

Utilice esta propiedad con el método SysCmd para determinar el objeto activo y su estado (por ejemplo, si el objeto está abierto, nuevo o se ha cambiado pero no se ha guardado).

Ejemplo:

El ejemplo siguiente utiliza las propiedades CurrentObjectType y CurrentObjectName con la función SysCmd para determinar si el objeto activo es el formulario Products y si este formulario está abierto y se ha modificado pero no guardado. Si se cumplen estas condiciones, se guarda y, a continuación, se cierra el formulario.

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

Soporte técnico y comentarios

¿Tiene preguntas o comentarios sobre VBA para Office o esta documentación? Vea Soporte técnico y comentarios sobre VBA para Office para obtener ayuda sobre las formas en las que puede recibir soporte técnico y enviar comentarios.