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á.

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

Uso de ToggleButton en Excel vba

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

:: Descargar el ejemplo Uso de ToggleButton en Excel.zip

You may also like...