VBA - Arrays

Sabemos muito bem que uma variável é um contêiner para armazenar um valor. Às vezes, os desenvolvedores podem manter mais de um valor em uma única variável por vez. Quando uma série de valores é armazenada em uma única variável, ela é conhecida comoarray variable.

Declaração de Array

Os arrays são declarados da mesma maneira que uma variável foi declarada, exceto que a declaração de uma variável de array usa parênteses. No exemplo a seguir, o tamanho da matriz é mencionado entre colchetes.

'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")
  • Embora o tamanho da matriz seja indicado como 5, ele pode conter 6 valores à medida que o índice da matriz começa em ZERO.

  • O índice de matriz não pode ser negativo.

  • VBScript Arrays pode armazenar qualquer tipo de variável em um array. Conseqüentemente, um array pode armazenar um inteiro, string ou caracteres em uma única variável de array.

Atribuição de valores a uma matriz

Os valores são atribuídos à matriz especificando um valor de índice da matriz em relação a cada um dos valores a serem atribuídos. Pode ser uma string.

Exemplo

Adicione um botão e adicione a seguinte função.

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

Quando você executa a função acima, ela produz a seguinte saída.

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

Matrizes multidimensionais

Os arrays não se limitam apenas a uma única dimensão, mas podem ter no máximo 60 dimensões. Matrizes bidimensionais são as mais comumente usadas.

Exemplo

No exemplo a seguir, uma matriz multidimensional é declarada com 3 linhas e 4 colunas.

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

Quando você executa a função acima, ela produz a seguinte saída.

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

Declaração ReDim

A instrução ReDim é usada para declarar variáveis ​​de matriz dinâmica e alocar ou realocar espaço de armazenamento.

Sintaxe

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

Descrição do Parâmetro

  • Preserve - Um parâmetro opcional usado para preservar os dados em uma matriz existente quando você altera o tamanho da última dimensão.

  • Varname - Um parâmetro obrigatório, que denota o nome da variável, que deve seguir as convenções de nomenclatura de variável padrão.

  • Subscripts - Um parâmetro obrigatório, que indica o tamanho da matriz.

Exemplo

No exemplo a seguir, uma matriz foi redefinida e os valores preservados quando o tamanho existente da matriz é alterado.

Note - Ao redimensionar um array menor que o original, os dados nos elementos eliminados serão perdidos.

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

Quando você executa a função acima, ela produz a seguinte saída.

XYZ
41.25
22
3
4
5
6
7

Métodos Array

Existem várias funções embutidas no VBScript que ajudam os desenvolvedores a lidar com matrizes de forma eficaz. Todos os métodos usados ​​em conjunto com arrays estão listados abaixo. Clique no nome do método para saber mais detalhes.

Sr. Não. Descrição da função
1 LBound

Uma Função, que retorna um inteiro que corresponde ao menor subscrito dos arrays fornecidos.

2 UBound

Uma Função, que retorna um inteiro que corresponde ao maior subscrito dos arrays fornecidos.

3 Dividido

Uma Função, que retorna uma matriz que contém um número especificado de valores. Dividir com base em um delimitador.

4 Junte-se

Uma Função, que retorna uma string que contém um número especificado de substrings em uma matriz. Esta é uma função exatamente oposta ao Método de divisão.

5 Filtro

Uma Função, que retorna uma matriz baseada em zero que contém um subconjunto de uma matriz de string com base em um critério de filtro específico.

6 IsArray

Uma Função, que retorna um valor booleano que indica se a variável de entrada é ou não uma matriz.

7 Apagar

Uma função, que recupera a memória alocada para as variáveis ​​do array.