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.