Curso Excel VBA y Macros – Cap. 57 – Formularios – PARTE 3 Control ListBox ó Cuadro de lista
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:
-
Pasar valores de un ListBox a otro ListBox. ✔
-
Filtrar valores de una tabla y mostrarlos en un ListBox.
-
Eliminar filas de una tabla con datos mostrados en un ListBox.
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
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.