Curso Excel VBA y Macros – Cap. 57 – Formularios – PARTE 3 Control ListBox ó Cuadro de lista

<<CURSO COMPLETO EN YOUTUBE>>

En esta parte de nuestro Curso de macros seguiremos con el tema de Control ActiveX ListBox. Ahora veremos una práctica muy interesante que nos permitirá retomar temas que ya hemos visto en temas anteriores de este curso. Veremos cómo pasar elementos de un ListBox a otro, y en ese pase de izquierda a derecha vamos a ocultar y mostrar hojas de un archivo de Excel.

Con respecto a este Control ListBox veremos los siguientes tema:

Ver video Capítulo 57 Excel VBA & Macros

Suscríbete al canal de EXCELeINFO en YouTube para aprender más de Excel y macros.

Pasar elementos de un ListBox a otro mostrando y ocultando hojas

En este ejemplo tendremos un Formulario que contendrá dos ListBox o Cuadros de lista. El Control de la izquierda se rellenará con el dato de las hojas visibles y el Control de la derecha con el dato de la hojas ocultas.

Al iniciar el Formulario, se ejecutará el evento Initialize, el cual nos permitirá rellenar los Cuadros de lista con los nombres de las hojas visibles u ocultas. En este tutorial repasaremos los temas:

  • Ciclo For Next.
  • Sentencia IF.
  • Método RemoveItem para eliminar valores de un ListBox.
  • Propiedad Visible de las hojas.

Figura 1. Formulario para mostrar u ocultar hojas usando ListBox.

Código VBA del UserForm

Option Explicit

'Botón para Ocultar hojas
Private Sub CommandButton1_Click()
Dim Cuenta As Integer
Dim Numero As Integer
Dim i As Integer
Dim j As Integer
Dim NombreHoja As String

Cuenta = Me.lstVisibles.ListCount

For i = 0 To Cuenta - 1
    If Me.lstVisibles.Selected(i) = True Then
        Numero = Numero + 1
    End If
Next i

If Cuenta = 1 Then
    MsgBox "Debe haber por lo menos una hoja visible.", vbExclamation, "EXCELeINFO"
Else
    If Numero <> 0 Then
        For j = 0 To Cuenta - 1
            If Me.lstVisibles.Selected(j) = True Then
                NombreHoja = Me.lstVisibles.List(j)
                Me.lstVisibles.RemoveItem j
                Me.lstOcultas.AddItem NombreHoja
                ActiveWorkbook.Sheets(NombreHoja).Visible = False
            End If
        Next j
    End If
End If
End Sub

'Botón para Mostrar hojas
Private Sub CommandButton2_Click()
Dim Cuenta As Integer
Dim Numero As Integer
Dim i As Integer
Dim j As Integer
Dim NombreHoja As String

Cuenta = Me.lstOcultas.ListCount

For i = 0 To Cuenta - 1
    If Me.lstOcultas.Selected(i) = True Then
        Numero = Numero + 1
    End If
Next i

If Numero <> 0 Then
    For j = 0 To Cuenta - 1
        If Me.lstOcultas.Selected(j) = True Then
            NombreHoja = Me.lstOcultas.List(j)
            Me.lstOcultas.RemoveItem j
            Me.lstVisibles.AddItem NombreHoja
            ActiveWorkbook.Sheets(NombreHoja).Visible = True
        End If
    Next j
End If
End Sub

'Botón Cerrar
Private Sub CommandButton3_Click()
Unload Me
End Sub

'Al abrir el Formulario
Private Sub UserForm_Initialize()

Dim Hoja As Object

For Each Hoja In ActiveWorkbook.Sheets
    If Hoja.Visible = True Then
        Me.lstVisibles.AddItem Hoja.Name
    Else
        Me.lstOcultas.AddItem Hoja.Name
    End If
Next Hoja

End Sub

Descarga el archivo de ejemplo

057 – Forrmularios Control ListBox Cuadro de lista 3 – EXCELeINFO.zip

<<CURSO COMPLETO EN YOUTUBE>>

Si te gustó este tutorial por favor regístrate en nuestra Lista de correo y Suscríbete a nuestro canal de YouTube para que estés siempre enterado de lo nuevo que publicamos.

You may also like...