Compartir a través de


Referencia a objetos de control de pestaña en VBA

Use un control de pestaña para presentar varias páginas de información sobre un solo formulario. El control de pestaña es útil cuando el formulario contiene información que se puede ordenar en dos o más categorías.

En la mayoría de los casos, un control de tabulación funciona como otros controles de un formulario y se puede hacer referencia como miembro de la colección Controls de un formulario. Por ejemplo, para hacer referencia a un control de pestaña llamado TabControl1 en un formulario llamado Form1, puede usar la siguiente expresión:

Form1.Controls!TabControl1 

Sin embargo, dado que la colección Controls es la colección predeterminada del objeto Form , no es necesario hacer referencia explícitamente a la colección Controls . Es decir, puede omitir la referencia a la colección Controls de la expresión, como se muestra aquí:

Form1!TabControl1 

Consulte la colección Pages

Un control de pestaña contiene una o más páginas. Se hace referencia a cada página de un control de pestaña como miembro de la colección Pages del control tab. Se puede hacer referencia a cada página de la colección de Pages mediante su configuración de propiedad PageIndex (que refleja la posición de la página en la colección a partir de 0), o mediante la configuración de propiedad Name.

No existe una colección predeterminada para el objeto TabControl, por lo que, al hacer referencia a elementos de la colección de Pages mediante el valor del índice, o a las propiedades de la colección de Pages, debe hacer referencia explícitamente a la colección de Pages.

Por ejemplo, para cambiar el valor de la propiedad Caption de la primera página de un control de tabulación denominado TabControl1 haciendo referencia a su valor de índice en la colección Pages , puede usar la siguiente instrucción:

TabControl1.Pages(0).Caption = "First Page" 

Como cada página es miembro de la colección de Controls de un formulario, puede hacer referencia a una página solamente por su propiedad Name sin hacer referencia al nombre del control de pestaña o su colección de Pages. Por ejemplo, para cambiar el valor de la propiedad Caption de una página con su propiedad Nameestablecida en Page1, use la siguiente instrucción:

Page1.Caption = "First Page" 

Nota:

Si un usuario o código cambia la propiedad PageIndex de una página, también cambia la referencia al índice de la página y la posición de la página en el orden de páginas. En este caso, si desea mantener una referencia absoluta a una página, consulte la propiedad Name de la página.

La colección Pages tiene una propiedad, Count, que devuelve el número de páginas de un control de tabulación. Observe que esta propiedad no es una propiedad del propio control de pestaña, sino de su colección de Pages, por lo que debe hacer referencia explícitamente a la colección. Por ejemplo, para determinar el número de páginas en TabControl1, use la siguiente instrucción:

TabControl1.Pages.Count 

Consulte y cambie la página actual.

La propiedad predeterminada de un control de tabulación es Value, que devuelve un entero que identifica la página actual: 0 para la primera página, 1 para la segunda página, etc. La propiedad Value está disponible solamente en código VBA o en expresiones. Al leer la propiedad Value en tiempo de ejecución, puede determinar qué página está actualmente en la parte superior. Por ejemplo, la siguiente instrucción devuelve el valor para la página actual de TabControl1:

TabControl1.Value 

Nota:

Dado que la propiedad Value es la propiedad predeterminada de un control de tabulación, no es necesario hacer referencia a él explícitamente. Por este motivo, podría omitir .Value del ejemplo anterior.

Al establecer la propiedad Value de un control de pestaña en tiempo de ejecución, se cambia el foco a la página especificada; convirtiéndola en la página actual. Por ejemplo, la siguiente instrucción mueve el foco a la tercera página de TabControl1:

TabControl1 = 2 

Esto resulta útil si establece la propiedad Style de un control de tabulación en None (que no muestra pestañas) y desea usar botones de comando en el formulario para determinar qué página tiene el foco. Para usar un botón de comando para mostrar una página, añada un procedimiento de evento al evento OnClick del botón que establece la propiedad Value del control de pestaña en el entero que identifica la página adecuada.

Al usar la propiedad Value con la colección Pages, puede establecer propiedades en tiempo de ejecución para la página superior. Por ejemplo, puede ocultar la página actual y todos sus controles al establecer la propiedad Visible de la página en False. La siguiente instrucción oculta la página actual de TabControl1:

TabControl1.Pages(TabControl1).Visible = False 

Cada página de un control tab también tiene una propiedad PageIndex que especifica la posición de una página dentro de la colección Pages utilizando la misma secuencia de numeración que la propiedad Value del control de tabulación: 0 para la primera página, 1 para la segunda página, etc. Al establecer el valor de la propiedad PageIndex de una página, se cambia el orden en que aparecen las páginas en el control de pestaña. Por ejemplo, si quisiera hacer que una página llamada Page1 sea la segunda página, usaría la siguiente instrucción:

Page1.PageIndex = 1 

La propiedad PageIndex generalmente se establece más durante el tiempo de diseño en la hoja de propiedades de una página. También puede establecer el orden de la página haciendo clic con el botón derecho en el borde de un control de pestaña y, a continuación, haciendo clic en Orden de página en el menú contextual.

Consulte los controles de una página de control de pestaña.

Los controles que coloca en una página de control de pestaña forman parte de la misma colección que todos los controles del formulario. Por este motivo, cada control de una página de control de pestaña debe tener un nombre que sea único con respecto a todos los demás controles del mismo formulario. Consulte los controles de una página de control de tabulación con la misma sintaxis para los controles de un formulario sin un control de tabulación.

Forms!Employees!HomePhone 

Dado que cada control de un formulario tiene su propia colección de Controls, también puede hacer referencia a los controles de un control de pestaña como miembros de su colección de Controls. Por ejemplo, el siguiente código enumera (muestra en una lista) todos los controles del control de pestaña del formulario Employees.

Sub ListTabControlControls() 
 
   Dim tabCtl As TabControl 
   Dim ctlCurrent As Control 
 
On Error GoTo ErrorHandler 
 
   ' Return reference to tab control on Employees form. 
   Set tabCtl = Forms!Employees!TabCtl0 
 
   ' List all controls on the tab control in the Debug window. 
   For Each ctlCurrent In tabCtl 
      Debug.Print ctlCurrent.Name 
   Next ctlCurrent 
 
   Set tabCtl = Nothing 
   Set ctlCurrent = Nothing 
 
   Exit Sub 
 
ErrorHandler: 
   MsgBox "Error #: " & Err.Number & vbCrLf & vbCrLf & Err.Description 
End Sub

Además, cada página de un control de pestaña tiene su propia colección de Controls. Al usar la colección Controls de una página, puede hacer referencia a los controles de cada página. El siguiente código enumera los controles para cada página del control de pestaña del formulario Employees.

Sub ListPageControls() 
 
   Dim tabCtl As TabControl 
   Dim pagCurrent As Page 
   Dim ctlCurrent As Control 
   Dim intPageNum As Integer 
 
On Error GoTo ErrorHandler 
 
   ' Return reference to tab control on Employees form. 
   Set tabCtl = Forms!Employees!TabCtl0 
 
   ' List all controls for each page on the tab control in the 
   ' Debug window. 
   For Each pagCurrent In tabCtl.Pages 
      intPageNum = intPageNum + 1 
      Debug.Print "Page " & intPageNum & " Controls:" 
      For Each ctlCurrent In pagCurrent.Controls 
         Debug.Print ctlCurrent.Name 
      Next ctlCurrent 
      Debug.Print 
   Next pagCurrent 
 
   Set tabCtl = Nothing 
   Set ctlCurrent = Nothing 
   Set pagCurrent = Nothing 
 
   Exit Sub 
 
ErrorHandler: 
   MsgBox "Error #: " & Err.Number & vbCrLf & vbCrLf & Err.Description 
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.