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. |