Este artículo pertenece a nuestra serie dedicada a UserForms. Si es el primero que has visto, te sugiero iniciar por la primera entrega: Introducción a UserForms

Artículo anterior: UserForms | Botones de Opción

En esta nueva entrega de nuestra serie de artículos dedicados a UserForms, vamos a profundizar en una nueva herramienta de nuestra caja mágica para crear formularios: las casillas de selección.

La buena noticia: si te sientes a gusto con el uso de los botones de opción (que tratamos en el artículo anterior, click aquí para ver el artículo), lo que sigue a continuación te resultará muy sencillo.

Se trata de la misma lógica que los botones de opción, pero con una diferencia fundamental: para el caso de las casillas de selección, cada una es independiente de las otras. Esto quiere decir que como usuario podrás activarlas o no, independientemente de lo que hayas hecho con las demás.

Dado que el caso anterior puede ser lógico y fácil de implementar, vamos a ver un caso particular donde las casillas de selección adquieren no solo una diferencia, sino también una ventaja frente a los botones de opción.

Si quisieras insertar, por ejemplo, una sola opción para el usuario, digamos en este caso: “Perfil Activo”, con los botones de opción el usuario no podría revertir su selección si lo hubiera activado pero luego se arrepintiese: al hacer click sobre el botón, la selección no alterna entre “encendido”/”apagado”. Por el contrario, con las casillas de selección, esto resulta muy sencillo.

Veámoslo en la práctica.

En primer lugar, agregaremos una nueva columna a nuestra base de datos de ejemplo, con el encabezado “Usuario Activo” en la columna F:

La idea de este campo es tener actualizada nuestra base en caso de que existan número de legajo que ya no sean utilizados habitualmente por personas pertenecientes a una organización dada.

Vamos ahora a la edición de nuestro formulario en VBA, y empezamos por crear algo más de espacio en la zona inferior, antes de los botones de Aceptar y Cancelar.

En este caso, nos plantemos una duda, que podrás encaminar según tus propias preferencias al crear tus formularios: ¿es necesario crear una etiqueta que acompañe a la casilla de selección, o con colocarle un nombre descriptivo es suficiente? Siempre debemos evitar redundancias u opciones que generen dudas al usuario, de modo que en mi caso, optaré por crear la casilla de manera directa con una caption clara de lo que realiza.

Como “nombre duro” del objeto, he decidido llamarlo chkActivo. Además, voy a establecer que, de manera predeterminada, se encuentre tildado, y el usuario deba destildarlo manualmente cuando desea establecer que el perfil no tiene actividad. Esto se debe a que suponemos será el caso más frecuente en la carga de datos. Configuramos entonces su propiedad Value = True.

Finalmente, configuraremos el código que se ejecutará cada vez que presionemos el botón Aceptar (recuerda que en nuestro ejemplo, es la macro: Private Sub cmdAceptar_Click().

Agregaremos dos bloques de código:

  • Una que cargue la palabra “Activo” si la casilla está tildada, o “Inactivo” si no lo está: una nueva condición If…Else

If chkActivo.Value = True Then

Cells(UFila, 6).Value = "Activo"

Else

Cells(UFila, 6).Value = "inactivo"

End If

  • Una línea que reestablezca el valor predeterminado True al reiniciar el formulario:

chkActivo.Value = True

Y ensayamos nuestro formulario:

Te invito a hacer la prueba de cómo se comporta el formulario al hacer click sobre un botón de opción ya elegido, contra el comportamiento de la casilla de selección al hacerle click nuevamente.


Siguiente artículo:

Configuración de los campos de texto [Próximamente]