VBA - tablice

Doskonale wiemy, że zmienna jest kontenerem do przechowywania wartości. Czasami programiści są w stanie przechowywać więcej niż jedną wartość w jednej zmiennej naraz. Gdy seria wartości jest przechowywana w jednej zmiennej, nazywa się to plikiemarray variable.

Deklaracja tablicy

Tablice są deklarowane w ten sam sposób, w jaki zadeklarowano zmienną, z tym wyjątkiem, że deklaracja zmiennej tablicowej używa nawiasów. W poniższym przykładzie rozmiar tablicy jest podany w nawiasach.

'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")
  • Chociaż rozmiar tablicy jest oznaczony jako 5, może zawierać 6 wartości, ponieważ indeks tablicy zaczyna się od ZERA.

  • Indeks tablicy nie może być ujemny.

  • Tablice VBScript mogą przechowywać dowolne typy zmiennych w tablicy. W związku z tym tablica może przechowywać liczbę całkowitą, ciąg lub znaki w jednej zmiennej tablicowej.

Przypisywanie wartości do tablicy

Wartości są przypisywane do tablicy przez określenie wartości indeksu tablicy dla każdej wartości, która ma zostać przypisana. Może to być ciąg.

Przykład

Dodaj przycisk i następującą funkcję.

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

Wykonanie powyższej funkcji daje następujące dane wyjściowe.

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

Tablice wielowymiarowe

Tablice nie są ograniczone tylko do jednego wymiaru, ale mogą mieć maksymalnie 60 wymiarów. Tablice dwuwymiarowe są najczęściej używanymi.

Przykład

W poniższym przykładzie zadeklarowano tablicę wielowymiarową z 3 wierszami i 4 kolumnami.

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

Wykonanie powyższej funkcji daje następujące dane wyjściowe.

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

Instrukcja ReDim

Instrukcja ReDim służy do deklarowania zmiennych tablic dynamicznych oraz przydzielania lub ponownego przydzielania przestrzeni dyskowej.

Składnia

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

Opis parametrów

  • Preserve - Opcjonalny parametr używany do zachowania danych w istniejącej tablicy w przypadku zmiany rozmiaru ostatniego wymiaru.

  • Varname - Wymagany parametr, który oznacza nazwę zmiennej, która powinna być zgodna ze standardowymi konwencjami nazewnictwa zmiennych.

  • Subscripts - wymagany parametr, który wskazuje rozmiar tablicy.

Przykład

W poniższym przykładzie tablica została przedefiniowana, a następnie wartości zostały zachowane, gdy istniejący rozmiar tablicy zostanie zmieniony.

Note - Po zmianie rozmiaru tablicy na mniejszą niż pierwotnie dane w wyeliminowanych elementach zostaną utracone.

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

Wykonanie powyższej funkcji daje następujące dane wyjściowe.

XYZ
41.25
22
3
4
5
6
7

Metody tablicowe

Istnieje wiele wbudowanych funkcji w VBScript, które pomagają programistom efektywnie obsługiwać tablice. Wszystkie metody używane w połączeniu z tablicami są wymienione poniżej. Kliknij nazwę metody, aby poznać szczegóły.

Sr.No. Opis funkcji
1 LBound

Funkcja, która zwraca liczbę całkowitą odpowiadającą najmniejszemu indeksowi dolnemu z podanych tablic.

2 UBound

Funkcja, która zwraca liczbę całkowitą odpowiadającą największemu indeksowi z podanych tablic.

3 Rozdzielać

Funkcja, która zwraca tablicę zawierającą określoną liczbę wartości. Podziel na podstawie separatora.

4 Przystąp

Funkcja, która zwraca ciąg zawierający określoną liczbę podciągów w tablicy. Jest to dokładnie odwrotna funkcja metody Split.

5 Filtr

Funkcja, która zwraca tablicę liczoną od zera, która zawiera podzbiór tablicy ciągów na podstawie określonych kryteriów filtru.

6 IsArray

Funkcja, która zwraca wartość logiczną, która wskazuje, czy zmienna wejściowa jest tablicą.

7 Wymazać

Funkcja, która odzyskuje przydzieloną pamięć dla zmiennych tablicowych.