InicioSoftwareMs ExcelCrear formularios interactivos en Excel VBA con ActiveX

Crear formularios interactivos en Excel VBA con ActiveX

Los controles ActiveX son componentes interactivos que se pueden usar en Microsoft Excel para mejorar las capacidades de las hojas de cálculo. Con los controles ActiveX, los usuarios pueden crear interfaces más atractivas y flexibles, como cuadros de texto, cuadros de lista, cuadros combinados, casillas de verificación y botones de opción.

Esta característica cuenta con la tecnología de Visual Basic para Aplicaciones (VBA), que permite a los usuarios escribir código para organizar las interacciones entre los usuarios y las hojas de cálculo de Excel.

La presencia de ActiveX en Excel VBA es esencial porque ofrece una amplia gama de ventajas.  Los controles ActiveX proporcionan interacciones más intuitivas, como elegir de una lista o escribir texto. Además, con VBA, los usuarios pueden personalizar el comportamiento y la apariencia de los controles según sea necesario, como rellenar automáticamente los cuadros combinados de la base de datos.

ActiveX también ayuda a reducir los errores de entrada al proporcionar controles estructurados, como una casilla para las opciones Sí/No. Los controles ActiveX se pueden integrar con macros de VBA, lo que permite la automatización de diversas tareas, incluida la validación de datos y la generación de informes dinámicos.

ActiveX Controls

Diferencia entre controles ActiveX y controles de formulario en Excel

En Excel, hay dos tipos principales de controles que puede usar: ActiveX Controls y Form Controls.

ComparaciónActiveX ControlsForm Controls
InteractividadMás dinámico, programable con VBAMenos flexible, solo para funciones esenciales
PersonalizaciónCambiar el tamaño, el color y otras propiedadesLimitaciones en la configuración de la pantalla
CompatibilidadSolo funciona en Windows y requiere VBASe puede utilizar en Windows y Mac
Facilidad de usoNecesita comprensión de VBA para una configuración avanzadaFácil de usar sin codificación
RespuestaPuede responder a eventos como clics, desplazamientos o entradasSolo tiene funciones básicas como ejecutar macros

Si necesita controles más complejos e integración con VBA, los controles ActiveX son el camino a seguir. Sin embargo, si solo desea usar botones simples o listas sin necesidad de programación, los controles de formulario serán suficientes.

Habilitación de controles ActiveX en Excel

Si ActiveX Controls no funcionan en Excel, es probable que la configuración de seguridad integrada de Excel limite esta característica. Microsoft restringe automáticamente el uso de ActiveX Controls para evitar riesgos de seguridad, como la ejecución de código malintencionado de fuentes no confiables. Por lo tanto, debe cambiar la configuración de seguridad en el Trust   Center para que Excel pueda usar ActiveX   Controls más libremente. Puede habilitar una opción que permita que los controles ActiveX funcionen sin restricciones o solicitar confirmación antes de activarlos.

Pasos:

  1. Abra la aplicación Microsoft Excel.
  2. Haga clic en el menú File, luego seleccione Options y proceda a Trust Center.
  3. En la ventana que aparece, seleccione Trust Center Settings….
  4. En el panel izquierdo, busque y seleccione ActiveX Settings.
  5. Verás varias opciones; Elija una de las siguientes opciones:
    • Enable all controls without restrictions and without prompting (Habilite todos los controles sin restricciones ni solicitudes de confirmación).
    • O, si desea un mayor nivel de seguridad, elija Prompt me before enabling all controls with minimal restrictions (Solicite confirmación antes de habilitar todos los controles con restricciones mínimas).
  6. Después de elegir, haga clic en OK y cierre todas las ventanas de configuración que se abran.

Tipos de controles ActiveX y cómo usarlos

En Excel VBA, ActiveX Controls se utilizan para mejorar la interactividad y la automatización en las hojas de trabajo. Estos son algunos de los controles más utilizados y cómo usarlos.

1. Cuadro de texto

El Text Box permite a los usuarios introducir o mostrar texto en una UserForm de Excel o en una hoja de cálculo. Con VBA, podemos establecer el contenido del Text Box, ya sea completando los datos automáticamente o recibiendo entradas de los usuarios.

Cómo crear un cuadro de texto en Excel VBA

  1. Abra Excel y habilite la  pestaña Developer.
  2. Seleccione Developer > Insert > Text Box (ActiveX Controls).
  3. Haga clic y arrastre para crear un Text Box en la hoja de cálculo.
  4. Para agregar un código VBA, haga clic con el botón derecho en Text Box y luego seleccione View Code.

Ejemplo de código VBA para rellenar automáticamente cuadros de texto

El siguiente código rellenará automáticamente el Text Box con texto cuando se ejecute:

TextBox1.Text “Data imported successfully”

2. Cuadro de lista

List Box es un elemento de control que sirve para mostrar una lista de selecciones, lo que permite al usuario seleccionar uno o más elementos. Esto es especialmente útil en formularios de entrada de datos o para la navegación entre páginas en aplicaciones que usan Excel VBA.

Cómo agregar datos a un cuadro de lista en Excel VBA

  1. Abra la  pestaña Developer en Excel.
  2. Seleccione Insert > List Box (ActiveX Controls).
  3. Haga clic y arrastre para colocar el List Box en la hoja de trabajo.
  4. Haga clic derecho en List Box > Properties.

Ejemplo de código VBA para agregar elementos al cuadro de lista

Utilice el siguiente código VBA para agregar varios nombres de ciudades al List Box:

With Sheet1.ListBox1
  .AddItem  “Jakarta”
  .AddItem “Surabaya”
  .AddItem “Bandung”
End With

Este código se puede colocar en Workbook_Open evento para que los datos se carguen automáticamente cuando se abra el archivo.

Conexión de cuadros de lista con celdas en Excel

Para mostrar los elementos seleccionados del List Box a una celda específica, realice los siguientes pasos:

  1. Haga clic con el botón derecho en List Box y luego seleccione Properties.
  2. Busque la propiedad LinkedCell y, a continuación, escriba la dirección de la celda (ejemplo: D3).
  3. Ahora, cada vez que el usuario seleccione un elemento en el List Box, el valor aparecerá en la celda D3.

Si desea recuperar el valor seleccionado mediante VBA, utilice el siguiente código:

Range(“D3”).Value =  ListBox1.Value

3. Cuadro combinado

Combo Box es un control ActiveX en Excel VBA que sirve como una lista de opciones que se pueden desplegar. Los usuarios pueden seleccionar un solo elemento de la lista o escribir su texto. A menudo se utiliza un Combo Box en los formularios de entrada para minimizar los errores al introducir datos, ya que los usuarios sólo pueden elegir entre las opciones que se han proporcionado.

Cómo agregar datos dinámicos a un cuadro combinado

Para agregar un Combo Box a una hoja de cálculo, siga estos pasos:

  1. Abra Excel y asegúrese de que la pestaña Developer esté activada.
  2. Haga clic en Developer > Insert > Combo Box (ActiveX Controls).
  3. Haga clic y arrastre para dibujar Combo Box en la hoja de trabajo.
  4. Haga clic con el botón derecho en Combo Box y luego seleccione Properties.

Ejemplo de código VBA para agregar elementos a un cuadro combinado de forma dinámica

Utilice el siguiente código para agregar elementos al Combo Box automáticamente cuando se abra el libro o se haga clic en el botón:

ComboBox.Add  Item “Option 1”
ComboBox1.Add Item “Option 2”
ComboBox1.Add Item “Option 3”

Conexión de cuadros combinados con celdas en Excel

Para guardar el valor seleccionado en el Combo Box en una celda específica, realice los siguientes pasos:

  1. Haga clic con el botón derecho en Combo Box y luego seleccione Properties.
  2. Busque la propiedad LinkedCell y, a continuación, escriba la dirección de la celda (por ejemplo, D3).
  3. Ahora, cada vez que el usuario selecciona un elemento en el Combo Box, ese valor aparecerá en la celda D3.

Como alternativa, utilice el siguiente código VBA para guardar el valor de la opción en la celda:

Range(“D3”).Value  ComboBox1.Value

4. Casilla de verificación

Check Box es un control que permite al usuario seleccionar la opción Ya/Tidak o True/False. Esto es útil para entradas binarias como la confirmación de consentimiento, la selección de características o la activación/desactivación de una función en un formulario.

Usar la casilla de verificación para guardar valores verdaderos/falsos

Para agregar un Check Box en Excel VBA, siga estos pasos:

  1. Abra la  pestaña Developer en Excel.
  2. Haga clic en Insert > Check Box (ActiveX Controls).
  3. Haga clic y arrastre para colocar el Check Box en la hoja de trabajo.
  4. Haga clic derecho en Check   Box > Properties.

Ejemplo de código VBA para conectar una casilla de verificación con una celda

Para Check Box almacenar valores en celdas en función de su estado, use el siguiente código:

If CheckBox1.Value  = True Then
  Range(“D2”).Value  1
Else
  Range(“D2”).Value = 0
End If

Este código rellenará D2 celdas con 1 si el Check Box está marcado y 0 si no está marcado.

Para que esta función se ejecute automáticamente cuando el usuario haga clic en Check Box, use event Change dentro del VBA Editor:

Private Sub CheckBox1_Click()
  If CheckBox1.Value =True Then
  Range(“D2”).Value  1
  Else
  Range(“D2”).Value = 0
  End If
End Sub

5. Botones de opción

Tanto Check Box como Option Buttons se utilizan para proporcionar opciones a los usuarios, pero existen diferencias importantes entre los dos:

CaracterísticaCheck BoxOption Buttons
FunciónPermite a los usuarios elegir más de una opciónSolo se puede seleccionar una opción en un grupo
Tipo de entradaValor binario (verdadero/falso)Opciones exclusivas (solo una opción activa en un grupo)
UsoSe utiliza para activar/desactivar funcionesSe utiliza para elegir una de varias opciones
Ejemplos de usoElegir características adicionales en un formularioElige un género o método de pago

Si el usuario necesita seleccionar más de una opción, use Check Box. Sin embargo, si solo puede elegir una de varias opciones, use Option Buttons.

Pasos para crear un botón de selección en Excel VBA

  1. Abra Excel y habilite la  pestaña Developer.
  2. Seleccione Developer > Insert > Option Button (ActiveX Controls).
  3. Haga clic y arrastre para colocar dos Option Buttons en la hoja de trabajo.
  4. Haga clic con el botón derecho en cada Option Button y luego seleccione Properties.
    • Cambie el nombre de (Name) a OptionButton1 y OptionButton2.
    • Cambie el Caption a “Hombre” para OptionButton1 y “Mujer” para OptionButton2.
  5. Para agrupar los dos botones, colóquelos en Frame (ActiveX Controls) o en el UserForm.

Ejemplo de código VBA para conectar teclas selectoras con celdas

El siguiente código almacenará una selección del Option Button en la celda D3 de acuerdo con la elección del usuario:

If OptionButton1.Value =True Then Range(“D3”).Value “Male”
If OptionButton2.Value  =True Then Range(“D3”).Value “Female”

Para asegurarse de que este código se ejecuta automáticamente cuando el usuario hace clic en el botón, use los siguientes eventos de VBA:

Private Sub OptionButton1_Click()
   Range(“D3”).Value =“Male”
End Sub

Private Sub OptionButton2_Click()
  Range(“D3”).Value =“Female”
End Sub

Con este código, D3 celdas se actualizarán automáticamente de acuerdo con las elecciones realizadas por el usuario.

6. Botón de giro

Spin Button es un control que se utiliza para aumentar o disminuir el valor numérico de una celda gradualmente. Esto es especialmente útil para entradas numéricas, como establecer el número de bienes, las tasas de interés u otros parámetros que tienen limitaciones de valor.

Cómo establecer los valores máximo y mínimo en el botón Girar

  1. Abra la  pestaña Developer en Excel.
  2. Haga clic en Insert > Spin Button (ActiveX Controls).
  3. Haga clic y arrastre para colocar el Spin Button en la hoja de trabajo.
  4. Haga clic con el botón derecho en el Spin Button y luego seleccione Properties.

Ejemplo de código VBA para configurar el botón de giro

Utilice el siguiente código para establecer el límite de valor de Spin Button:

SpinButton1.Max  = 100
SpinButton1.Min  = 0

Para conectar Spin Button con celdas en Excel, use el siguiente código:

Private Sub SpinButton1_Change()
   Range(“C3”).Value = SpinButton1.Value
End Sub

Este código garantizará que cada vez que el usuario presione la tecla Spin Button, los valores de la celda C3 cambiarán de acuerdo con los valores establecidos en los controles.

Conclusión

Los controles ActiveX en Excel VBA son una característica muy útil para mejorar la interacción y la eficiencia en el procesamiento de datos. Con varios controles como Text Box, Combo Box, List Box, Check Box, Option Buttons y Spin Button, los usuarios pueden crear una interfaz más comprensible, automatizar el llenado de datos y reducir los errores al completar formularios.

Una ventaja clave de los controles ActiveX es su capacidad de personalizarse a través de VBA, lo que permite la ejecución automática de comandos y la integración con bases de datos o macros para una gestión de datos más compleja.

Para maximizar el uso de los controles ActiveX, se recomienda implementar técnicas de automatización más avanzadas, como el uso de UserForm, la validación de datos, el control de eventos y el formato condicional para mejorar la experiencia del usuario. Además, la conexión de controles ActiveX con bases de datos como Microsoft Access o SQL Server puede ayudar a administrar grandes cantidades de datos.

Al aplicar estas técnicas, el proceso de llenado de datos se vuelve más eficiente, preciso y profesional. Por lo tanto, comprender e implementar controles ActiveX en Excel VBA puede ser la mejor solución para los usuarios que desean crear un sistema de entrada de datos más estructurado y automatizado.

Artículos Recientes