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.

You may also like...