Arreglos en 1D (Vectores) y
en 2D (Matrices)
Arreglos
Arreglos en 1D (vectores)
Para lenguajes que inician contando la posición desde cero (0) la estructura
del vector es la siguiente:
Para lenguajes que inician contando la posición desde uno (1) la estructura
del vector es la siguiente:
Declaración de arreglos en 1D en VBA
Para declarar una variable tipo arreglo en VBA primero se debe
conocer que tipo de datos va a guardar la variable por ejemplo :
Integer, double, string, currency, etc.
Después se debe establecer el numero de elementos que va a tener
la variable.
La estructura de declaración es:
Dim Nombre_Variable (Numero de Posiciones) as Tipo de dato
5 8 4 2 1 9Edad=
Dim Edad(5) as Integer
VBA empieza a contar la posición desde 0
Vector con 6
elementos
Otra forma de declarar esta misma variable es:
Dim Edad(0 to 5) as Integer
Generalmente los ingenieros no estamos muy familiarizados con la
posición cero (0) en las matrices y vectores, por esta razón VBA permite
mediante un comando poder inicializar el conteo de la posición desde el
valor de uno (1); para esto se debe poner después de la sentencia Option
Explicit, la sentencia Option Base 1. Con esto se garantiza que los
arreglos inicien desde la posición 1
Option explicit
Option Base 1
5 8 4 2 1 9Edad=
Dim Edad(6) as Integer
VBA empieza a contar la posición desde 1
con la sentencia Option base 1
Vector con 6
elementos
Otra forma de declarar esta misma variable es:
Dim Edad(1 to 6) as Integer
Introducir valores en arreglos en 1D en VBA
Para introducir valores en un arreglo en VBA existen dos formas, la
forma manual o larga y la forma automática o corta.
a) Forma manual o larga
5 8 4 2 1 9
Si usamos la sentencia Option Base 1 la matriz se puede rellenar
manualmente de la siguiente manera:
Edad (1)=5
Edad (2)=8
Edad (3)=4
Edad (4)=2
Edad (5)=1
Edad (6)=9
Elemento 1 del vector Edad es igual a 5
Elemento 6 del vector Edad es igual a 9
Cuando estamos introduciendo vectores o matrices es importante
saber si el vector o matriz se ha guardado u operado
adecuadamente, para esto VBA cuenta con varias formas de
visualización tales como el comando Msgbox, Ventana inmediato y
celdas de Excel.
Usando Msgbox
MsgBox Edad(1)
MsgBox Edad(6)
Usando la ventana inmediato
Para esto debemos activar la ventana inmediato en el menú ver-
ventana inmediato.
El comando para imprimir valores en esta ventana es Debug.Print
Debug.Print Edad(1)
Debug.Print Edad(6)
Usando las celdas de Excel
Cells(1, 1) = Edad(1)
Cells(2, 1) = Edad(6)
Código en VBA
b) Forma automática
Si es un vector corto se puede usar un bucle que a través de un
inputbox vaya pidiendo cada uno de los elementos del vector asi:
Si el vector es demasiado largo lo mas conveniente es leerlo de las
celdas de Excel y guardarlo en el vector de forma automática así:
El objetivo es guardar de forma
automatica en un vector que se
llame Edad estos valores que hay
en la columna A del libro de Excel
Si es un vector o matriz de tamaño desconocido, se declara sin introducir
el tamaño del vector y después se redimensiona con el comando ReDim
Vamos a asumir que el vector es de tamaño desconocido y vamos a ir
escribiendo el código paso a paso asi:
Observemos que se escribe la sentencia Option base 1 para que el
programa empiece a contar los elementos del vector desde la posición 1
Observar que la variable Edad (que es un vector) no tiene un valor
dentro de los paréntesis, esto indica que se va a redimensionar
mas adelante dentro del programa (porque asumimos que el
vector es de tamaño desconocido)
Con este código se obtiene el numero de filas n que esta
ocupando el vector para posteriormente redimensionar la variable
Edad con este valor
Se ubica en la primera celda del vector
Obtiene el valor de la fila inicial
Salta a la ultima fila
Obtiene el valor de la fila final
Calcula el numero total de filas
Redimensiona el vector usando el valor de n
Este código permite seleccionar todo el vector para
posteriormente recorrer cada una de las celdas seleccionadas
Este código va recorriendo cada una de las celdas de la selección y
va guardando el valor de cada celda en la variable Edad en cada
posición i
Con este código puedo imprimir cada valor del vector edad en la
ventana inmediato para poder verificar que lo hizo bien.
Otra opción para poder verificar es escribir el vector guardado en las
celdas de Excel. Esto se hace con el código anterior.
Arreglos en 2D (matrices)
Ejemplo
Declaración de arreglos en 2D en VBA
Para declarar una variable tipo arreglo en 2D en VBA es muy similar
a la declaración en 1D, primero se debe conocer que tipo de datos va
a guardar la variable por ejemplo : Integer, double, string, currency,
etc.
Después se debe establecer el numero de filas y columnas que va a
tener la variable.
La estructura de declaración es:
Dim Nombre_Variable (# de filas, # de columnas)
as Tipo de dato
Al igual que con los vectores, el conteo de filas y columnas empieza por
defecto en (0,0), pero debido a la confusión que esto puede generar para
algunos se puede seguir usando la sentencia option base 1 para que el
conteo inicie en (1,1).
Usando Option base 1 tenemos
(1,1) (1,2) (1,3) (1,4)
(2,1) (2,2) (2,3) (2,4)
(3,1) (3,2) (3,3) (3,4)
Variable=
6 7 8 9
6 9 7 9
8 9 7 6
Cal=
La forma de declarar esta matriz es:
Option Explicit
Option Base 1
Dim Cal(3,4) as Integer
Introducir valores en arreglos en 2D en VBA
Igual que para los vectores, para introducir valores en un arreglo 2D
en VBA existen dos formas, la forma manual o larga y la forma
automática o corta.
a) Forma manual o larga
Si usamos la sentencia Option Base 1 la matriz se puede rellenar
manualmente de la siguiente manera:
Cal (1,1)=6
Cal (1,2)=7
Cal (1,3)=8
Cal (1,4)=9
6 7 8 9
6 9 7 9
8 9 7 6
Cal=
Cal (2,1)=6
Cal (2,2)=9
Cal (2,3)=7
Cal (2,4)=9
Cal (3,1)=8
Cal (3,2)=9
Cal (3,3)=7
Cal (3,4)=6
Para poder verificar que la matriz se ha guardado bien, al igual que con
los vectores se usa el Msgbox, Debug.print y por celdas. (ver el tema de
vectores)
b) Forma automática
Si es una matriz es corta se puede usar un bucle anidado que a
través de un inputbox vaya pidiendo cada uno de los elementos del
vector asi:
Si la matriz es demasiado grande como para introducirla elemento a
elemento, lo mas conveniente es leerla de las celdas de Excel y
guardarla de forma automática así:
El objetivo es guardar de forma automática en una
matriz que se llame Cal estos valores.
Si es un vector o matriz de tamaño desconocido, se declara sin introducir
el tamaño del vector y después se redimensiona con el comando ReDim
Vamos a asumir que la matriz es de tamaño desconocido y vamos a ir
escribiendo el código paso a paso así:
Observemos que se escribe la sentencia Option base 1 para que el programa
empiece a contar los elementos de la matriz desde la posición (1,1)
Observar que la variable cal (que es una matriz) no tiene un valor
dentro de los paréntesis, esto indica que se va a redimensionar
mas adelante dentro del programa (porque asumimos que la
matriz es de tamaño desconocido)
Con este código se obtiene el numero de filas n de la matriz
Se ubica en la primera celda de la matriz
Obtiene el valor de la fila inicial
Salta a la ultima fila
Obtiene el valor de la fila final
Calcula el numero total de filas
Se ubica en la primera celda de la matriz
Obtiene el valor de la columna inicial
Salta a la ultima columna
Obtiene el valor de la columna final
Calcula el numero total de columnas
Con este código se obtiene el numero de columnas m de la matriz
y se redimensiona para un tamaño de nxm.
Redimensiona la matriz para tamaño nxm
Con este For anidado se recorren las filas con el contador i y las
columnas con el contador j. Al ser j el contador mas interno, se
deben primero completar las columnas antes de cambiar a la otra
fila. Cada valor se va guardando en la posición (i,j) de la variable
cal.
Mediante este For anidado se puede escribir la matriz en celdas
de Excel para verificar de que se haya guardado bien en la
variable. Observar que a z se le suma n para evitar que se sobre
escriba sobre la original.
Top Related