Cómo cambiar el orden de tabulación en formularios de Microsoft Word (VBA)

El orden de tabulación (TabIndex) define la secuencia en que el cursor salta entre controles (cuadros de texto, botones, listas) al presionar Tab en un formulario de Word (UserForm VBA). Un orden lógico (arriba→abajo, izquierda→derecha) mejora usabilidad drásticamente.

Crear formulario de ejemplo (Si no tiene uno)

  1. Desarrollador > Visual Basic (Alt+F11).
  2. Insertar > UserForm.
  3. Cuadro de herramientas (Ctrl+T) > arrastre controles:
    3 TextBox (TextBox1, TextBox2, TextBox3)
    1 CommandButton (CommandButton1)
  4. Por defecto, TabIndex se asigna en orden de creación (último creado = 0). El orden de tabulación será inverso al visual (abajo→arriba).

Cambiar TabIndex: Método Propiedades (Estándar)

  1. En editor VBA, seleccione UserForm.
  2. Presione F4 para abrir Ventana Propiedades.
  3. Seleccione cada control (clic en él o combo superior en Propiedades).
  4. Modifique propiedad TabIndex (número entero ≥ 0):
    0 = Primer foco al abrir formulario
    1, 2, 3... = Orden secuencial al presionar Tab
  5. Ejemplo orden lógico (arriba→abajo):
    TextBox1 (Nombre) → TabIndex = 0
    TextBox2 (Email) → TabIndex = 1
    TextBox3 (Teléfono) → TabIndex = 2
    CommandButton1 (Enviar) → TabIndex = 3

Método rápido: Ver orden de tabulación gráfico

  1. En editor VBA con UserForm visible: Ver > Orden de tabulación (o botón Orden de tabulación en barra herramientas UserForm).
  2. Aparecen números azules en cada control.
  3. Clic en números en el orden deseado (1, 2, 3...). Word reasigna TabIndex automáticamente.
  4. Esc para salir.

Propiedades relacionadas importantes

Errores comunes y soluciones

  • Controles en Frame / MultiPage: TabIndex es local al contenedor. El Frame tiene su propio TabIndex en el formulario principal. Orden: Form.TabIndex(Frame) → Frame.TabIndex(Control1) → Frame.TabIndex(Control2)...
  • Controles ocultos (Visible=False): Se saltan automáticamente. Si se hacen visibles en runtime, respetan su TabIndex.
  • Controles deshabilitados (Enabled=False): Se saltan. Útil para campos condicionales.
  • Duplicados TabIndex: Word resuelve por orden Z (creación). Evítelo: use números únicos secuenciales.

Prueba del orden

  1. Ejecutar > Ejecutar Sub/UserForm (F5).
  2. Presione Tab repetidamente. Verifique secuencia visual lógica.
  3. Shift+Tab = orden inverso.

Código VBA para establecer TabIndex en runtime (Dinámico)

Private Sub UserForm_Initialize()
    ' Orden: txtNombre, txtEmail, txtTel, btnEnviar
    Me.txtNombre.TabIndex = 0
    Me.txtEmail.TabIndex = 1
    Me.txtTel.TabIndex = 2
    Me.btnEnviar.TabIndex = 3
    
    ' Saltar etiquetas
    Me.lblTitulo.TabStop = False
    Me.lblNombre.TabStop = False
    ' ...
End Sub

Consejo: Accesibilidad

Orden de tabulación lógico es requisito WCAG 2.1 (2.4.3 Order Focus). Pruebe navegación solo teclado (Tab, Shift+Tab, Enter, Espacio, Flechas en listas/combos). Use ToolTip (ControlTipText) en cada control para lectores de pantalla.

Copyright © Tecnología Electrónica - https://www.inteligentes.online
 
PropiedadFunciónValor típico
TabIndexOrden en secuencia Tab0, 1, 2...
TabStop¿Recibe foco con Tab?True (sí) / False (saltar, ej. etiquetas Label)
TakeFocusOnClick¿Tomar foco al clic?True (botones), False (labels)
Cycle (UserForm)Comportamiento al finalfmCycleAllForms (cicla todo), fmCycleCurrentForm (solo este form)