Registrar, Modificar y Eliminar “ListView“
El control ListView nativo del Sistema Operativo Windows es un control que le permite mostrar elementos en varios diseños. Este control versátil se puede usar en Microsoft Office VBA.
En el siguiente articulo encontraras un ejemplo muy práctico utilizando el control de ListView de Excel VBA con una base de datos de Clientes, en el cual podrás Registrar, realizar Modificaciones o también Eliminar un Registro desde un solo formulario.
Agregar el Control de ListView en VBA
Antes de que pueda agregar el control ListView en VBA, necesita tener el paquete de controles comunes de MS Windows “MSCOMCTL.OCX” instalado y registrado en su Sistema. Si “MSCOMCTL.OCX” está registrado correctamente, puede agregar el control ListView en Excel VBA utilizando el cuadro de diálogo Controles adicionales.
Preste atención a la ubicación de “MSCOMCTL.OCX” en el cuadro de diálogo Controles adicionales. Este “OCX” es un archivo ejecutable de 32 bits y debe colocarse en el directorio del sistema “System32”.
Como hemos visto, podemos optar por incluir ListView a nuestros Formulario para tener una buena presentación de Nuestros Informes o Reportes…. Veamos cómo funciona el Código del Siguiente Ejemplo…
El Siguiente Post te explicare las funciones de cada Código de los cuales tenemos;
Inicializar del Formulario:
Crear las columnas del Objeto ListView y rellena el Objeto ListView con los datos de la base de Clientes.
Private Sub UserForm_Initialize()
‘’’Con el campo “Cb_Sexo” añadiremos los datos “M” de masculino y “F” de femenino.
Cb_Sexo.AddItem “M”
Cb_Sexo.AddItem “F”
T_NombreCliente.SetFocus
‘’’añade las Columnas.
With ListaClientesListv
.CheckBoxes = True
.Gridlines = True
.View = lvwReport
.FullRowSelect = True
.ColumnHeaders.Add Text:=”Codigo”, Width:=50
.ColumnHeaders.Add Text:=”Nombre del Cliente”, Width:=110
.ColumnHeaders.Add Text:=”Sexo”, Width:=30
.ColumnHeaders.Add Text:=”Fecha Nac.”, Width:=60
.ColumnHeaders.Add Text:=”Email”, Width:=130
End With
‘’’añade los datos en el ListView.
UltimaFila = Hoja1.Cells(Hoja1.Cells.Rows.Count, “A”).End(xlUp).Row
ListaClientesListv.ListItems.Clear
Cantidad = 0
For fila = 2 To UltimaFila
Set li = ListaClientesListv.ListItems.Add(Text:=Hoja1.Cells(fila, “A”).Value)
li.ListSubItems.Add Text:=Hoja1.Cells(fila, “B”).Value
li.ListSubItems.Add Text:=Hoja1.Cells(fila, “C”).Value
li.ListSubItems.Add Text:=Hoja1.Cells(fila, “D”).Value
li.ListSubItems.Add Text:=Hoja1.Cells(fila, “E”).Value
Cantidad = Cantidad + 1
Next
‘’’conteo de todos los Clientes Registrado.
Lbl_Cant = “Cant: ” & Cantidad
End Sub
Evento Click de la Lista de Clientes “ ListView “:
Este Código rellena los campos de los TextBox y ComboBox, es decir, al hacer Click sobre una fila en el ListView.
Private Sub ListaClientesListv_ItemClick(ByVal Item As MSComctlLib.ListItem)
T_Codigo = ListaClientesListv.SelectedItem
T_NombreCliente = ListaClientesListv.SelectedItem.ListSubItems.Item(1)
Cb_Sexo = ListaClientesListv.SelectedItem.ListSubItems.Item(2)
T_FechaNac = ListaClientesListv.SelectedItem.ListSubItems.Item(3)
T_Email = ListaClientesListv.SelectedItem.ListSubItems.Item(4)
End Sub
Botón Registrar:
Este código es para registrar nuevos clientes en la base de datos, el código del cliente se ingresa automáticamente ya que este no permitirá la repetición de código.
Private Sub Btn_Registrar_Click()
UltimaFila = Hoja1.Cells(Hoja1.Cells.Rows.Count, “A”).End(xlUp).Row + 1
If UltimaFila – 1 = “Codigo” Then
Cells(UltimaFila, 1) = Format(1, “00000”)
Codigo = Format(1, “00000”)
Else
Cells(UltimaFila, 1) = Format(Cells(UltimaFila – 1, 1) + 1, “00000”)
Codigo = Format(Cells(UltimaFila – 1, 1) + 1, “00000”)
End If
‘’’se usa UCASE para ingresar los datos en Mayúsculas.
Hoja1.Cells(UltimaFila, 2) = UCase(T_NombreCliente)
Hoja1.Cells(UltimaFila, 3) = UCase(Cb_Sexo)
Hoja1.Cells(UltimaFila, 4) = CDate(T_FechaNac)
Hoja1.Cells(UltimaFila, 5) = T_Email
i = ListaClientesListv.ListItems.Count + 1
Set li = ListaClientesListv.ListItems.Add(Text:=Codigo)
li.ListSubItems.Add Text:=UCase(T_NombreCliente)
li.ListSubItems.Add Text:=UCase(Cb_Sexo)
li.ListSubItems.Add Text:=CDate(T_FechaNac)
li.ListSubItems.Add Text:= T_Email
End Sub
Botón Modificar:
Este código es para actualizar los datos seleccionados, el Código será la Referencia ya que este no se puede cambiar “es único”.
Private Sub Btn_Modificar_Click()
UltimaFila = Hoja1.Cells(Hoja1.Cells.Rows.Count, “A”).End(xlUp).Row + 1
For fila = 2 To UltimaFila
If T_Codigo = Hoja1.Cells(fila, 1) Then
Hoja1.Cells(fila, 2) = UCase(T_NombreCliente)
Hoja1.Cells(fila, 3) = UCase(Cb_Sexo)
Hoja1.Cells(fila, 4) = CDate(T_FechaNac)
Hoja1.Cells(fila, 5) = T_Email
Exit For
End If
Next
For fila = 1 To ListaClientesListv.ListItems.Count
If ListaClientesListv.ListItems.Item(fila) = T_Codigo Then
ListaClientesListv.ListItems.Item(fila).SubItems(1) = UCase(T_NombreCliente)
ListaClientesListv.ListItems.Item(fila).SubItems(2) = UCase(Cb_Sexo)
ListaClientesListv.ListItems.Item(fila).SubItems(3) = CDate(T_FechaNac)
ListaClientesListv.ListItems.Item(fila).SubItems(4) = T_Email
Exit For
End If
Next
End Sub
Botón Eliminar:
Con este código podrás eliminar un registro seleccionado desde la lista de Clientes haciendo referencia el código del cliente.
Private Sub Btn_Eliminar_Click()
UltimaFila = Hoja1.Cells(Hoja1.Cells.Rows.Count, “A”).End(xlUp).Row + 1
For i = 2 To UltimaFila
If T_Codigo = Hoja1.Cells(i, 1) Then
Hoja1.Cells(i, 2).EntireRow.Delete
Exit For
End If
Next
For i = 1 To ListaClientesListv.ListItems.Count
If ListaClientesListv.ListItems.Item(i) = T_Codigo Then
ListaClientesListv.ListItems.Remove ListaClientesListv.ListItems(i).Index
Exit For
End If
Next
End Sub
Botón Nuevo Registro:
Y con este código borraras los datos ingresados en los “cuadros de texto” y “cuadro combinados” que se encuentran en el formulario.
Private Sub Btn_NuevoR_Click()
For Each myControl In Controls
Nom_Objeto = TypeName(myControl)
If Nom_Objeto = “TextBox” Then
myControl.Value = “”
ElseIf Nom_Objeto = “ComboBox” Then
myControl.Value = “”
End If
Next
End Sub
Con este Ejemplo (proyecto), lo pueden utilizar para implementarlo en sus proyectos, seguirlo mejorando o para aprender ya que contiene códigos muy simples y fácil de aprender. Al igual en este Blog de MacroExcel encontraras muchos ejemplos los cuales contienen ListView.
Comparte y sigamos creciendo, al final te estaré dejando el link para que te descargues este Ejemplo y comiences a aprender sobre los Listview y los implementes a tus proyectos.


1 comentario
jesus · noviembre 30, 2019 a las 3:32 pm
cual es el paswword para poder ver el código en VBA?