Uso de control ToggleButton con Excel vba
El control ToggleButton es una mezcla entre un Button y un CheckBox. Tiene un aspecto de botón, pero comportamiento de CheckBox.
Este control nos permite mostrar si un elemento está seleccionado. Tiene los valores True cuando el control está presionado y False cuando no lo está.
Ver Video Curso de Macros capítulo 72
Suscríbete al canal de EXCELeINFO en YouTube para aprender más de Excel y macros.
Ejemplo
En el siguiente ejemplo hacemos uso de un formulario con un control ToggleButton que nos va a servir para manipular la visibilidad de las líneas de división en Excel. Si el control está presionado se ocultarán las líneas de división, de lo contrario estarán visibles.
Imágenes del ejemplo
Código
En un módulo normal declaramos la variable pública intValor. Esta variable nos ayudará a asignar un valor temporal para hacer una validación al momento de inicializar el formulario. Más abajo vemos cómo usarla.
'Declaramos la variable pública
Public intValor
Al inicializar el formulario se deberá hacer la validación sobre el estado de las líneas de división y la variable pública intValor se le asignará el valor de 1.
Private Sub UserForm_Initialize() 'Al iniciar el formulario validamos si las líneas 'de división está visibles If ActiveWindow.DisplayGridlines = True Then Me.ToggleButton1.Caption = "Ocultar líneas de división" Me.ToggleButton1.Value = False 'En caso de que no estén visibles mostramos el mensaje ElseIf ActiveWindow.DisplayGridlines = False Then Me.ToggleButton1.Caption = "Mostrar líneas de división" 'Inicializamos la variable pública intValor = 1 Me.ToggleButton1.Value = True End If End Sub
Al presionar para mostrar u ocultar primeramente se validará lo que contenga la variable pública. El valor de la variable se le asignó 1 al inicializar el formulario, por lo tanto le asignaremos el valor de 2.
Por qué usar variable pública
Al momento de inicializar el formulario, si las líneas de división están ocultas, entonces el valor del ToggleButton debe ser True, pero vba lo toma como si fuera el evento Click, por lo tanto ejecutará ejecutará la macro de dicho evento. Entonces lo que hacemos el decirle que si intValor vale 1 entonces le asigne el valor de 2 y salga de la macro, para que cuando sí queramos ejecutar el evento Click la variable sea 2 y la macro se ejecute de manera correcta.
Private Sub ToggleButton1_Click() 'Hacemos una validación de la variable pública If intValor = 1 Then intValor = 2 Else 'Si las líneas está ocultas, el control permancerá 'en estado normal (False) y se asignará un texto If ActiveWindow.DisplayGridlines = True Then ActiveWindow.DisplayGridlines = False ToggleButton1.Caption = "Mostrar líneas de división" ElseIf ActiveWindow.DisplayGridlines = False Then ActiveWindow.DisplayGridlines = True ToggleButton1.Caption = "Ocultar líneas de división" End If End If End Sub