Para esta práctica 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:
2.- Crear una hoja2 vacía tal y como se muestra:
3.- Ingresar al editor VBA Excel, Alt + F11.
4.- En el Módulo1 escribimos el siguiente código:
Sub Lista_de_arreglo()
Dim codigo() as String
Dim nombre() as String
Dim costo() as Currency
Dim precio() as Currency
Dim stock() as Currency
Dim contador As Integer
Dim Rango As Range
Set Rango = Hoja1.Range("A1").CurrentRegion
Dim i As Long
For i = 2 To Rango.Rows.Count
contador=contador+1
ReDim Preserve codigo(contador) As String
ReDim Preserve nombre(contador) As String
ReDim Preserve costo(contador) As Currency
ReDim Preserve precio(contador) As Currency
ReDim Preserve stock(contador) As Currency
codigo(contador) = Rango.Cells(i, 1).Value
nombre(contador) = Rango.Cells(i, 2).Value
costo(contador) = Rango.Cells(i, 3).Value
precio(contador) = Rango.Cells(i, 4).Value
stock(contador) = Rango.Cells(i, 5).Value
Next i
'Copiamos la lista de la hoja 1 a la hoja 2
For i = 1 To contador
Hoja2.Cells(i + 2, "A").Value = codigo(i)
Hoja2.Cells(i + 2, "B").Value = nombre(i)
Hoja2.Cells(i + 2, "C").Value = costo(i)
Hoja2.Cells(i + 2, "D").Value = precio(i)
Hoja2.Cells(i + 2, "E").Value = stock(i)
Next i
End Sub
5.- Nos posicionamos en la subrutina Sub Lista_de_Arreglo() y ejecutamos (F5).
Como resultado obtendremos que la lista de productos de la hoja1 fueron mostrados en la hoja2.
Esta instrucción tiene muchos usos. Supongamos que deseamos modificar las partidas de una cotización. Los pasos serian:
1.-Declarar la variable "id" como variable Public en un Módulo simple.
2.-Si los datos se encuentran almacenados en un objeto de tipo ListBox, entonces
3.-Programamos un botón Buscar. Aquí lo que sucede es que al ejecutar la búsqueda de las partidas va almacenar el "id" tanto en ListBox como en ReDim().
4.-Una vez modificado el Listbox, tener un botón programado de Modificar.
Al recorrer los "id" de ListBox, si uno de ellos es 0 entonces registrar esa partida de lo contrario si el "id" es diferente de 0 entonces modificar la fila. Lo interesante viene a continuación:
Como recordaran en memoria aun se encuentra almacenado los "id" cuando se presionó el botón buscar por lo que debe recorrer 1 x 1 y los busque dentro de ListBox, si no lo encuentra que elimine la fila de la de la hoja de datos.
For i = 1 To intcontado
lngideparti = 0
lngideparti = lngidparti(i)
For intfila = 1 To Me.ListBox1.ListCount - 1
id_detalle = 0
id_detalle = Me.ListBox1.List(intfila, 0)
If lngideparti = id_detalle Then
intval = 1
Exit For
Else
intval = 0
End If
Next intfila
If intval = 0 Then
Set rng1 = Hoja5.Range("A:A").Find(What:=lngideparti, LookAt:=xlWhole, LookIn:=xlValues)
If rng1 Is Nothing Then
MsgBox "El id no existe", vbOKOnly + vbInformation, "No encontrado"
Else
Hoja5.Range("J" & rng1.Row) = "CANCELADO"
End If
End If
Next i
No hay comentarios.:
Publicar un comentario