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.

Categorías: Vba

1 comentario

jesus · noviembre 30, 2019 a las 3:32 pm

cual es el paswword para poder ver el código en VBA?

Deja un comentario

WhatsApp Necesitas Ayuda?
A %d blogueros les gusta esto: