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.

