Arrays dinámicos

Ya he hablado anteriormente de los arrays. La mayoría de los lenguajes de programación utilizan los arrays que, recordemos es un conjunto de elementos que tienen en común un nombre aunque entre ellos son diferentes. Por ejemplo el array dígitos estaría compuesto por las cifras 0,1,2,3,4,5,6,7,8 y 9. Cada uno de ellos irán referidos con un índice. Así supongamos el array compuesto por los meses del año:

  • Al tratarse de un número de elementos fijo estaríamos hablando de un array estático que, en este caso consta de 12 elementos.
  • Antes de empezar a programar con ellos necesitamos declararlos

Dim meses(11) as byte

  • Podrá observar que entre paréntesis he colocado 11 y no 12, ya que, por defecto los subíndices de los arrays de VBA empiezan en 0 (que es el límite inferior de la matriz). Si deseamos que comience en 1 en vez de en 0, incluiremos antes del primer array y antes del primer procedimiento las expresión:

Option Base 1

Ahora bien ¿que haríamos si no conociéramos de antemano la dimensión de nuestra array? Para ello podemos declarar un array dinámico dejando el paréntesis en blanco en la sentencia Dim:

Dim miArray( ) as Double

Una vez que conozcamos el número de elementos que necesitamos usaremos la sentencia Redim para señalar el número de subíndices necesarios. Por ejemplo:

Redim mi Array(102)

Veamos un ejemplo sencillo para entender los conceptos mencionados:

Vamos a declarar una matriz unidimensional de 3 elementos compuesto por los tres primeros dias de la semana, y haremos que no los presente por pantalla:

Option Explicit

Sub asignandoarray()
Dim miArray(3) As String
miArray(0) = “lunes”
miArray(1) = “martes”
miArray(2) = “miércoles”

MsgBox miArray(0) & ” ” & miArray(1) & ” ” & miArray(2)
End Sub

Ahora redimensionaremos el array para introducir el jueves y el viernes:

Sub redimarray()
‘Voy a redimensionar la array anterior para incluir el jueves y el viernes
ReDim miArray(5)
miArray(0) = “lunes”
miArray(1) = “martes”
miArray(2) = “miércoles”
miArray(3) = “jueves”
miArray(4) = “viernes”

MsgBox miArray(0) & ” ” & miArray(1) & ” ” & miArray(2) & ” ” & miArray(3) & ” ” & miArray(4)
End Sub

Si deseamos no tener que volver a escribir el mismo procedimiento podemos incluir datos con la expresión Redim preserve(el número siguiente en el índice)

Sub asignandoarray2()
ReDim miArray(3)
miArray(0) = “lunes”
miArray(1) = “martes”
miArray(2) = “miércoles”

ReDim Preserve miArray(3)
miArray(3) = “jueves”
MsgBox miArray(0) & ” ” & miArray(1) & ” ” & miArray(2) & ” ” & miArray(3)
End Sub

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: