Curso Excel VBA y Macros – Cap. 66 – Formularios – ListView – Alta, baja y actualización
<<CURSO COMPLETO DE MACROS EN YOUTUBE>>
Con este video tutorial veremos una serie de videos dedicados al Control ListView, el cual es un Control muy flexible que viene a reemplazar de cierta manera al Control ListBox, ya que tiene más opciones a personalizar.
En este capítulo veremos la manera de de dar de alta, baja y actualización de elementos en el ListView. A diferencia de los anteriores capítulos, aquí haremos las acciones anteriores directamente en el control, es decir, sin tocar todavía nada de la hoja de cálculo. En un siguiente tutorial veremos cómo pasar los elementos del ListView a una hoja. Este ejemplo puede ser utilizado en un desarrollo de Punto de venta o Point o sales (POS).
Ver video Capítulo 66 Excel VBA & Macros
Suscríbete al canal de EXCELeINFO en YouTube para aprender más de Excel y macros.
Alta de elementos
Tenemos el control ListView, al cual le daremos de alta elementos o items, los cuáles se irán añadiendo uno a uno. Tenemos el botón Nuevo que habilitará los TextBoxes para aceptar valores. Al presionar el botón Nuevo, también se habilitará el botón Agregar para ir añadiendo elementos al ListView.
Figura 1. Alta de valores en el control ActiveX ListView.
Actualizar valores
Usaremos el evento Click del control ListView, para que cuando se elija un elemento, se habiliten los TextBox, además de pasar los valores del elemento seleccionado a los mismo TextBox. A la vez se habilitará el botón Actualizar para pasar los valores de los TextBox al elemento seleccionado del ListView.
Figura 2. Actualizar valores de un ListView.
Eliminar valores
Al seleccionar un elemento del ListView así como podemos Actualizar, también podemos Eliminar registros. Al dar Click en el ListView se habilita el botón Eliminar para dar de baja elementos.
Código VBA del Formulario
Les pongo el código de las macros utilizadas en este proyecto.
Option Explicit
'EXCELeINFO
'MVP Sergio Alejandro Campos
'http://www.exceleinfo.com
'https://www.youtube.com/user/sergioacamposh
'http://blogs.itpro.es/exceleinfo
Public vItem As Integer
'ACTUALIZAR ELEMENTOS
Private Sub btnActualizar_Click()
Me.ListView1.ListItems.Item(vItem) = Me.TextBox2.Value
Me.ListView1.ListItems.Item(vItem).SubItems(1) = Me.TextBox3.Value
Me.ListView1.ListItems.Item(vItem).SubItems(2) = Me.TextBox4.Value
End Sub
'ELIMINAR ELEMENTOS
Private Sub btnEliminar_Click()
Me.ListView1.ListItems.Remove (vItem)
If Me.ListView1.ListItems.Count = 0 Then
Call DeshabilitarTextos
Me.btnNuevo.Enabled = True
Me.btnActualizar.Enabled = False
Me.btnEliminar.Enabled = False
Me.btnGuardar.Enabled = False
End If
End Sub
'AGREGAR ELEMENTOS
Private Sub btnGuardar_Click()
Dim Item As ListItem
Set Item = Me.ListView1.ListItems.Add(Text:=Me.TextBox2.Value)
Item.ListSubItems.Add Text:=Me.TextBox3.Value
Item.ListSubItems.Add Text:=Me.TextBox4.Value
Me.TextBox2.Value = ""
Me.TextBox3.Value = ""
Me.TextBox4.Value = ""
Me.TextBox2.SetFocus
End Sub
'NUEVO ELEMENTO
Private Sub btnNuevo_Click()
Dim Rango As Range
Dim NuevaFila As Integer
Dim NuevoId As Integer
Call HabilitarTextos
Me.btnNuevo.Enabled = False
Me.btnGuardar.Enabled = True
'Me.btnGuardarTodo.Enabled = True
''''
Me.TextBox2.SetFocus
Set Rango = Sheets("Hoja1").Range("A1").CurrentRegion
NuevaFila = Rango.Rows.Count
NuevoId = Sheets("Hoja1").Cells(NuevaFila, 1) + 1
Me.TextBox1.Value = NuevoId
''''
End Sub
'AL DAR CLICK EN EL LIST VIEW
Private Sub ListView1_Click()
Call HabilitarTextos
Call PasarATextBox
vItem = Me.ListView1.SelectedItem.Index
Me.btnActualizar.Enabled = True
Me.btnEliminar.Enabled = True
Me.btnGuardar.Enabled = False
End Sub
Sub PasarATextBox()
With Me.ListView1
Me.TextBox2.Value = .SelectedItem
Me.TextBox3.Value = .SelectedItem.SubItems(1)
Me.TextBox4.Value = .SelectedItem.SubItems(2)
End With
End Sub
'AL INICIAR EL FORMULARIO
Private Sub UserForm_Initialize()
With Me.ListView1
.Gridlines = True
.View = lvwReport
.FullRowSelect = True
End With
Call DeshabilitarTextos
With Me.ListView1.ColumnHeaders
.Add Text:="VENDEDOR", Width:=90
.Add Text:="SUCURSAL", Width:=90
.Add Text:="PRODUCTO", Width:=90
End With
Me.btnGuardar.Enabled = False
Me.btnActualizar.Enabled = False
Me.btnEliminar.Enabled = False
'Me.btnGuardarTodo.Enabled = False
End Sub
Sub HabilitarTextos()
'Me.TextBox1.BackColor = VBA.vbWhite
Me.TextBox2.Enabled = True
Me.TextBox2.BackColor = VBA.vbWhite
Me.TextBox2.Value = ""
Me.TextBox3.Enabled = True
Me.TextBox3.BackColor = VBA.vbWhite
Me.TextBox3.Value = ""
Me.TextBox4.Enabled = True
Me.TextBox4.BackColor = VBA.vbWhite
Me.TextBox4.Value = ""
Me.TextBox2.SetFocus
End Sub
Sub DeshabilitarTextos()
'Me.TextBox1.Enabled = False
'Me.TextBox1.BackColor = VBA.RGB(242, 242, 242)
Me.TextBox2.Enabled = False
Me.TextBox2.BackColor = VBA.RGB(242, 242, 242)
Me.TextBox3.Enabled = False
Me.TextBox3.BackColor = VBA.RGB(242, 242, 242)
Me.TextBox4.Enabled = False
Me.TextBox4.BackColor = VBA.RGB(242, 242, 242)
'Me.btnGuardarTodo.Enabled = False
'Me.btnGuardarTodo.BackColor = VBA.RGB(242, 242, 242)
End Sub
Descarga el archivo de ejemplo
066 – Forrmularios Control ListView PARTE 4 – EXCELeINFO.zip
<<CURSO COMPLETO DE MACROS 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.

