Excel Avanzado

Macros, Vba en Excel y muchos ejemplos de nuestro Curso de Excel Avanzado

Excel Avanzado

Declarar arreglos en VBA (ejemplo)

| 2 comentarios

Una arreglo en VBA es un conjunto de valores que están lógicamente relacionados unos con otros, mediante su uso se puede hacer referencia a estos valores relacionados con el mismo nombre, y el uso de un número que se llama un índice o subíndice para distinguirlos. Los valores individuales son llamados los elementos del arreglo.

En el siguiente ejemplo supongamos que una empresa comercial llamada Tiendas Smith desea tener un sistema que le permita seleccionar aleatoriamente cuál de sus doce tiendas ubicadas a nivel nacional será la siguiente en ser auditada. Para ello desarrolla los siguiente comandos:

Sub muestra_nueva()
Dim i As Long
Dim Tienda(12) As Single, Tienda2(12) As String
Dim texto As String

Tienda2(1) = "Barranco"
Tienda2(2) = "Cercado"
Tienda2(3) = "La Molina"
Tienda2(4) = "Los Olivos"
Tienda2(5) = "Miraflores"
Tienda2(6) = "Pueblo Libre"
Tienda2(7) = "San Isidro"
Tienda2(8) = "San Miguel"
Tienda2(9) = "Trujillo"
Tienda2(10) = "Chiclayo"
Tienda2(11) = "Piura"
Tienda2(12) = "Arequipa"

For i = 1 To UBound(Tienda)
Tienda(i) = Rnd
Cells(i, 2) = Tienda(i)
Next i

Call doble_orden(Tienda, Tienda2)
texto = ""
For i = 1 To 1
texto = texto & Tienda2(i) & vbCrLf
Cells(i, 1) = Tienda2(i)
Next i

MsgBox texto

End Sub

Sub doble_orden(x() As Single, y() As String)
Dim xTemp As Double
Dim yTemp As String
Dim i As Long
Dim j As Long

For j = 2 To UBound(x)
xTemp = x(j)
yTemp = y(j)
For i = j - 1 To 1 Step -1
If (x(i) <= xTemp) Then GoTo 10
x(i + 1) = x(i)
y(i + 1) = y(i)
Next i
i = 0
10 x(i + 1) = xTemp
y(i + 1) = yTemp
Next j

End Sub

Como se puede apreciar, en la primera macro llamada muestra_nueva se llama a una macro denominada doble_orden que a través de un conjunto de reglas va generando ordenaciones aleatorias. En la primera macro se aplica este orden aleatorio a las doce tiendas.

Asimismo, se ha agregado un botón de comando vinculado para ejecutar la macro muestra_nueva. De esta forma se puede ir seleccionando aleatoriamente la tienda que será auditada por el equipo de control de gestión de Tiendas Smith.

grafo_fin

(Para mayor visualización de la imagen, hacer click en la misma)

Se adjunta el archivo del presente ejemplo:

AUDITORIA_TIENDAS_SMITH

 

Autor: Luis Tarazona Ramos

 

 

2 comentarios

  1. Esta opcion permite organizar y obtener la informacion de manera sectorizada y precisa.

  2. En mi opinion, este codigo de ejemplo es pesimo para explicar el uso de los arrays (se supone que, como una primera aproximacion).

    El problema practico planteado es supremamente simple (basta usar application.worksheetfuncionts.rndbetween ... para elegir uno de los elementos del array, que dicho de paso tiene el elemento cero omitido de tu codigo, llevando a una interpretacion erronea de la forma en que se indexan los elementos del array.

    Para matar una mosca no vas a usar una bazooka, o si?

Deja una respuesta

Los campos requeridos estan marcados con *.