VBA: matrices

Sabemos muy bien que una variable es un contenedor para almacenar un valor. A veces, los desarrolladores están en condiciones de mantener más de un valor en una sola variable a la vez. Cuando una serie de valores se almacenan en una sola variable, se conoce comoarray variable.

Declaración de matriz

Las matrices se declaran de la misma manera que se ha declarado una variable, excepto que la declaración de una variable de matriz utiliza paréntesis. En el siguiente ejemplo, el tamaño de la matriz se menciona entre paréntesis.

'Method 1 : Using Dim
Dim arr1()	'Without Size

'Method 2 : Mentioning the Size
Dim arr2(5)  'Declared with size of 5

'Method 3 : using 'Array' Parameter
Dim arr3
arr3 = Array("apple","Orange","Grapes")
  • Aunque el tamaño de la matriz se indica como 5, puede contener 6 valores ya que el índice de la matriz comienza desde CERO.

  • El índice de matriz no puede ser negativo.

  • VBScript Arrays puede almacenar cualquier tipo de variable en una matriz. Por tanto, una matriz puede almacenar un número entero, una cadena o caracteres en una única variable de matriz.

Asignar valores a una matriz

Los valores se asignan a la matriz especificando un valor de índice de matriz contra cada uno de los valores a asignar. Puede ser una cuerda.

Ejemplo

Agregue un botón y agregue la siguiente función.

Private Sub Constant_demo_Click()
   Dim arr(5)
   arr(0) = "1"           'Number as String
   arr(1) = "VBScript"    'String
   arr(2) = 100 		     'Number
   arr(3) = 2.45 		     'Decimal Number
   arr(4) = #10/07/2013#  'Date
   arr(5) = #12.45 PM#    'Time
  
   msgbox("Value stored in Array index 0 : " & arr(0))
   msgbox("Value stored in Array index 1 : " & arr(1))
   msgbox("Value stored in Array index 2 : " & arr(2))
   msgbox("Value stored in Array index 3 : " & arr(3))
   msgbox("Value stored in Array index 4 : " & arr(4))
   msgbox("Value stored in Array index 5 : " & arr(5))
End Sub

Cuando ejecuta la función anterior, produce la siguiente salida.

Value stored in Array index 0 : 1
Value stored in Array index 1 : VBScript
Value stored in Array index 2 : 100
Value stored in Array index 3 : 2.45
Value stored in Array index 4 : 7/10/2013
Value stored in Array index 5 : 12:45:00 PM

Matrices multidimensionales

Las matrices no se limitan a una única dimensión, sin embargo, pueden tener un máximo de 60 dimensiones. Las matrices bidimensionales son las más utilizadas.

Ejemplo

En el siguiente ejemplo, se declara una matriz multidimensional con 3 filas y 4 columnas.

Private Sub Constant_demo_Click()
   Dim arr(2,3) as Variant	' Which has 3 rows and 4 columns
   arr(0,0) = "Apple" 
   arr(0,1) = "Orange"
   arr(0,2) = "Grapes"           
   arr(0,3) = "pineapple" 
   arr(1,0) = "cucumber"           
   arr(1,1) = "beans"           
   arr(1,2) = "carrot"           
   arr(1,3) = "tomato"           
   arr(2,0) = "potato"             
   arr(2,1) = "sandwitch"            
   arr(2,2) = "coffee"             
   arr(2,3) = "nuts"            
           
   msgbox("Value in Array index 0,1 : " &  arr(0,1))
   msgbox("Value in Array index 2,2 : " &  arr(2,2))
End Sub

Cuando ejecuta la función anterior, produce la siguiente salida.

Value stored in Array index : 0 , 1 : Orange
Value stored in Array index : 2 , 2 : coffee

Declaración ReDim

La declaración ReDim se utiliza para declarar variables de matriz dinámica y asignar o reasignar espacio de almacenamiento.

Sintaxis

ReDim [Preserve] varname(subscripts) [, varname(subscripts)]

Descripción de parámetros

  • Preserve - Un parámetro opcional que se usa para conservar los datos en una matriz existente cuando cambia el tamaño de la última dimensión.

  • Varname - Un parámetro obligatorio, que denota el nombre de la variable, que debe seguir las convenciones estándar de nomenclatura de variables.

  • Subscripts - Un parámetro obligatorio, que indica el tamaño de la matriz.

Ejemplo

En el siguiente ejemplo, se ha redefinido una matriz y luego se conservan los valores cuando se cambia el tamaño existente de la matriz.

Note - Al cambiar el tamaño de una matriz más pequeña de lo que era originalmente, se perderán los datos de los elementos eliminados.

Private Sub Constant_demo_Click()
   Dim a() as variant
   i = 0
   redim a(5)
   a(0) = "XYZ"
   a(1) = 41.25
   a(2) = 22
  
   REDIM PRESERVE a(7)
   For i = 3 to 7
   a(i) = i
   Next
  
   'to Fetch the output
   For i = 0 to ubound(a)
      Msgbox a(i)
   Next
End Sub

Cuando ejecuta la función anterior, produce la siguiente salida.

XYZ
41.25
22
3
4
5
6
7

Métodos de matriz

Hay varias funciones incorporadas dentro de VBScript que ayudan a los desarrolladores a manejar matrices de manera efectiva. Todos los métodos que se utilizan junto con las matrices se enumeran a continuación. Haga clic en el nombre del método para conocerlo en detalle.

No Señor. Función descriptiva
1 LBound

Una función, que devuelve un número entero que corresponde al subíndice más pequeño de las matrices dadas.

2 UBound

Una función, que devuelve un número entero que corresponde al subíndice más grande de las matrices dadas.

3 División

Una función, que devuelve una matriz que contiene un número específico de valores. Dividir según un delimitador.

4 Unirse

Una función, que devuelve una cadena que contiene un número específico de subcadenas en una matriz. Esta es una función exactamente opuesta al método de división.

5 Filtrar

Una función, que devuelve una matriz de base cero que contiene un subconjunto de una matriz de cadenas según un criterio de filtro específico.

6 IsArray

Una función, que devuelve un valor booleano que indica si la variable de entrada es una matriz o no.

7 Borrar

Una función, que recupera la memoria asignada para las variables de matriz.