Arrays en Excel VBA Español – Parte 2/4

Hola mundo! Después de mucho hago la segunda parte de la publicación Arrays en Excel VBA Español

Muy bien, en la publicación anterior vimos los array estáticos, en esta continuación veremos a los arrays multidimensionales

Arrays multidimensionales – Excel VBA

Vimos que en un array estático podemos almacenar diversa data, esta data se almacena en forma de un listado

Un array multidimensional trabaja con una lógica parecida, también va a permitir almacenar información, pero la diferencia radica en que ahora disponemos de uno o más ejes adicionales

¿Qué se entiende como un eje adicional? Vale, lo explicaremos de manera gráfica

Array estático
Array multidimensional

Espero con estas imágenes el concepto haya quedado más claro sobre lo que mencioné de un eje adicional

Un array multidimensional nos permite trabajar con dos o más ejes, en el ejemplo gráfico lo podemos ver con dos ejes

Con mayor cantidad de ejes, lo veremos en el transcurso de esta publicación

¿Cómo declarar un array multidimensional?

La declaración es muy sencilla, supongamos que deseamos crear un array de dos dimensiones cuyos ejes sean 2 y 3

Dim apellidos(2, 3) As integer

¿Muy sencillo verdad? Estos arrays cumplen con la misma condición de que el primer parámetro inicia en CERO

Un array de 2×3 (Se lee dos por tres), tendrá los siguientes espacios disponibles

  • apellidos(0, 0)
  • apellidos(0, 1)
  • apellidos(0, 2)
  • apellidos(0, 3)
  • apellidos(1, 0)
  • apellidos(1, 1)
  • apellidos(1, 2)
  • apellidos(1, 3)
  • apellidos(2, 0)
  • apellidos(2, 1)
  • apellidos(2, 2)
  • apellidos(2, 3)

Y de esta forma hemos declarado nuestro array ¿Muy sencillo verdad? Continuemos

Agregando información a un array multidimensional en Excel VBA

Al igual que en los array estáticos, la información se puede agregar o actualizar de manera muy sencilla

En muchos lenguajes de programación se tienen que escribir largas cadenas de código para actualizar data de un array

Ing. Luis Rojas
Dim apellidos(2, 3) As Integer

apellidos(0, 1) = 1
apellidos(0, 1) = 2
apellidos(0, 2) = 3
apellidos(0, 3) = 4
apellidos(1, 0) = 5
apellidos(1, 1) = 6
apellidos(1, 2) = 7
apellidos(1, 3) = 8
apellidos(2, 0) = 9
apellidos(2, 1) = 10
apellidos(2, 2) = 11
apellidos(2, 3) = 12

Y la actualización de información se realiza de forma similar

apellidos(1, 2) = 77

Agregando más de dos vectores a un Array multidimensional

Líneas superiores te mencioné que un array multidimensional puede tener 2 o más ejes, y ahora te enseñaré a cómo agregar más ejes

En realidad es muy sencillo (Casi todo es sencillo en VBA si se sabe explicar)

Solo debemos agregar un argumento más al momento de declarar el array

Dim apellidos(4, 3, 2) As String
    
apellidos(0, 0, 0) = "Rojas"
apellidos(0, 0, 1) = "Medina"
apellidos(0, 0, 2) = "Ramirez"

apellidos(0, 1, 0) = "Mendoza"
apellidos(0, 2, 0) = "Toficio"
apellidos(0, 3, 0) = "Martinez"

'n combinaciones

Y así de sencillo podemos agregar un eje más, podemos tener 4, 5, 6 o más ejes

Dim apellidos(4, 3, 2) As String
Dim apellidos2(5, 6, 7, 8) As String
Dim apellidos3(9, 10, 11, 12, 13) As String
dim apellidos4(14,15,16,17,18,19,20) as String

Un consejo que te doy, es no crear ejes en exceso, recuerda que nosotros los programadores somos muy ordenados con nuestro código y siempre buscamos el máximo rendimiento de nuestra PC

Limitar el tamaño de un Array en Excel VBA

De manera similar a la publicación anterior Arrays en Excel VBA Español Parte 1/4 podemos modificar el parámetro de inicio de un array

Es decir, por defecto el parámetro de un array inicia en cero (Ejemplo: apellidos(0,1))

Si agregamos la instrucción Option Base 1, todos los arrays (Estáticos, multidimensionales y/o dinámicos) tendrán como parámetro de inicio el 1 y ya no el 0

Arrays multidimensionales en Excel VBA

De igual forma que en arrays estáticos, podemos limitar los argumentos de nuestro array. Es decir, si necesitamos por algún motivo que nuestro array no inicie en 0 o en 1, sino en 2 (Por ejemplo) podemos programar lo siguiente

Dim apellidos(2 to 4, 3) As Integer

apellidos(2, 0) = 1
apellidos(3, 0) = 2
apellidos(4, 0) = 3

apellidos(2, 1) = 4
apellidos(3, 1) = 5
apellidos(4, 1) = 6

apellidos(2, 2) = 7
apellidos(3, 2) = 8
apellidos(4, 2) = 9

apellidos(2, 3) = 10
apellidos(3, 3) = 11
apellidos(4, 3) = 12

Y no solo podemos limitar un argumento, sino los que necesitemos

Dim apellidos(4 To 20, 3 To 5, 2 To 10) As String
Dim apellidos2(5, 6 To 9, 7 To 15, 8 To 12) As String
Dim apellidos3(9 To 11, 10, 11 To 20, 12 To 13, 13) As String

Y llegamos al final de la segunda parte de nuestra publicación, si te ha gustado, por favor déjame un comentario y sígueme en mis redes sociales 🙂

Deja una respuesta