Palabras clave: etiqueta, label, asociada, vinculada, control
Autor: xavi y Duane Hookom
Extraído de: experiencia propia y un ejemplo de UtterAccess muy antiguo
Objetivo:
Obtener propiedades de la etiqueta asociada a un control, por ejemplo, un cuadro de texto sabiendo el nombre del cuadro de texto.
La nueva versión 2019 incorpora una propiedad llamada "Nombre de etiqueta" que permite asociar una etiqueta existente a un control. Antes, como dice este artículo (https://support.microsoft.com/es-es/office/novedades-de-access-2019-f52c5317-3494-4105-9c56-5a2abb8e0f87?ui=es-es&rs=es-es&ad=es) era necesario cortar la etiqueta, clicar el control y pegar la etiqueta. De esa forma se asociaban ambos controles.
El "problema" es acceder a la propiedad desde VBA.
Si investigamos nos encontramos que su nombre es LabelName. Pero resulta que, desde código, no aparece ???
La forma de acceder es "indirecta": Me!nombrecontrol.Properties("LabelName")
Ahora bien... ¿y como acceder en versiones anteriores?
Esto lo he sacado de un ejemplo muy antiguo, del 2007, de UtterAccess. Pero el código es más antiguo aún: 1998. Autor: de Duane Hooko
Pues accediendo a la colección Controles del control. Si la cuenta de controles del control es superior a 0, el ítem 0 de la colección es la etiqueta. Referenciando ese control podemos acceder a sus propiedades.
' Asignamos el control
Set ctrl = Screen.ActiveControl
' Desactivamos momentáneamente el control de errores por si alguna propiedad fallara
On Error Resume Next
' Si el contador de controles del control es superior a 0
If ctrl.Controls.Count > 0 Then
' Tomamos el ítem 0 de la colección y accedemos a sus propiedades
Debug.Print "Nombre: " & ctrl.Controls(0).Name
Debug.Print "Caption: " & ctrl.Controls(0).Caption
End If
' Reactivamos el control de errores
On Error GoTo ErrorHandler