martes, 5 de abril de 2022

Listar y mostrar registros con Módulo de clase y el método ArrayList (mscorlib.dll)

    En este articulo ahora les compartiré un método para poder enlistar un conjunto de registros mismos que pueden ser manipulados, exportados o movidos de un lugar a otro de manera dinámica. En el articulo anterior se llevo acabo la misma tarea por medio del método Collection. Ahora el método que utilizaremos es ArrayList de la librería mscorlib.dll. Adicional a ello emplearemos un Módulo simple y un Módulo de clase.

    Ejemplo: El usuario necesita extraer la lista de productos con sus respectivos costos, precios y stock, de la base de datos y deberán ser mostrados en cualquiera de sus formas posible: en un formulario simple, exportados, listados en una hoja Excel e.t.c.

    Para esta practica lo que haremos es solicitar la información de la hoja1 y que nos los muestre en el hoja2.

Los pasos que debemos seguir son los siguientes:

1.- Crear un nuevo libro de trabajo, hoja1 con la siguiente información:

Hoja1

2.- Crear una hoja2 vacía tal y como se muestra:

Hoja2 vacía

3.- Ingresar al editor VBA Excel, Alt + F11.
4.- Agregar la librería mscorlib.dll desde el menú Herramientas, referencia.

Librería mscorlib.dll

5.- Insertar un Módulo simple.
6.- Insertar un Módulo de clase y en la propiedad (name) escribir: clsProductos.

Insertar Módulo y Módulo de clase

7.- En el Módulo de clase clsProductos escribimos el siguiente código:

Public codigo As Integer
Public nombre As String
Public costo As Currency
Public precio As Currency
Public stock As Currency

8.- En el Módulo1 escribimos el siguiente código:

Sub Lista_de_arreglo()
Dim ArrayListPr As New arrayList
Dim Rango As Range
Set Rango = Hoja1.Range("A1").CurrentRegion
Dim i As Long, Productos As clsProductos
For i = 2 To Rango.Rows.Count
    Set Productos = New clsProductos
    Productos.codigo = Rango.Cells(i, 1).Value
    Productos.nombre = Rango.Cells(i, 2).Value
    Productos.costo = Rango.Cells(i, 3).Value
    Productos.precio = Rango.Cells(i, 4).Value
    Productos.stock = Rango.Cells(i, 5).Value
    'Agrega lista de Productos
    ArrayListPr.Add Productos
Next i
Dim lista As clsProductos
'Copiamos la lista de la hoja 1 a la hoja 2
For i = 0 To ArrayListPr.Count - 1
    Set lista = ArrayListPr(i)
    Hoja2.Cells(i + 2, "A").Value = lista.codigo
    Hoja2.Cells(i + 2, "B").Value = lista.nombre
    Hoja2.Cells(i + 2, "C").Value = lista.costo
    Hoja2.Cells(i + 2, "D").Value = lista.precio
    Hoja2.Cells(i + 2, "E").Value = lista.stock
Next i
End Sub

9.- Nos posicionamos en la subrutina Sub Lista_de_Arreglo() y ejecutamos (F5).

Datos copiados de la Hoja1 a la Hoja2 con ArrayList

    Como resultado obtendremos que la lista de productos de la hoja1 fueron mostrados en la hoja2, de manera dinámica con ArrayList y el método clsProductos. Nos vemos en un próximo articulo.  


No hay comentarios.:

Publicar un comentario