czwartek, 6 września 2018

VBA - tablice


VBA - tablice

Doskonale wiemy, że zmienna to kontener przechowujący wartość. Czasami programiści mogą utrzymywać więcej niż jedną wartość w jednej zmiennej naraz. Gdy seria wartości jest przechowywana w pojedynczej zmiennej, wówczas jest znana jako zmienna tablicowa.
Deklaracja tablicy
Tablice są deklarowane w ten sam sposób, w jaki zmienna jest deklarowana, z wyjątkiem tego, że deklaracja zmiennej tablicowej używa nawiasów. W poniższym przykładzie rozmiar tablicy podano w nawiasach.
'Metoda 1 : Użyj Dim
Dim arr1()       'Bez podanej wielkości

'Metoda 2 : podano rozmiar
Dim arr2(5)  'zadeklarowana wielkość to 5

'Metoda 3 : Użyto parametru 'Array'
Dim arr3
arr3 = Array("jabłko","gruszka","śliwka")
·      Chociaż rozmiar tablicy jest oznaczony jako 5, może on zawierać 6 wartości, ponieważ indeks tablicy zaczyna się od ZERA.
·      Indeks tablicy nie może być ujemny.
·      Tablice w VBScript mogą przechowywać dowolny typ zmiennej w tablicy. W związku z tym tablica może przechowywać liczbę całkowitą, łańcuch lub znaki w pojedynczej zmiennej tablicowej.

Przypisywanie wartości do tablicy

Wartości są przypisywane do tablicy przez określenie wartości indeksu tablicy dla każdej z przypisywanych wartości. Może to być ciąg.
Przykład
Dodaj przycisk i dodaj następującą funkcję.
Private Sub tablica_demo_Click()
   Dim arr(5)
   arr(0) = "1"            'liczba jako ciąg tekstowy
   arr(1) = "VBScript"     'Ciąg tekstowy
   arr(2) = 100            'Liczba
   arr(3) = 2.45           'liczba typu Decimal
   arr(4) = #10-07-2018#   'Data
   arr(5) = #22.45#     'Czas
 
   msgbox("Wartość przechowywana w indeksie tablicy 0 : " & arr(0))
   msgbox("Wartość przechowywana w indeksie tablicy 1 : " & arr(1))
   msgbox("Wartość przechowywana w indeksie tablicy 2 : " & arr(2))
   msgbox("Wartość przechowywana w indeksie tablicy 3 : " & arr(3))
   msgbox("Wartość przechowywana w indeksie tablicy 4 : " & arr(4))
   msgbox("Wartość przechowywana w indeksie tablicy 5 : " & arr(5))
End Sub
Po wykonaniu powyższej funkcji generuje się następujący wynik.
Wartość przechowywana w indeksie tablicy 0 : 1
Wartość przechowywana w indeksie tablicy 1 : VBScript
Wartość przechowywana w indeksie tablicy 2 : 100
Wartość przechowywana w indeksie tablicy 3 : 2.45
Wartość przechowywana w indeksie tablicy 4 : 10-07-2018
Wartość przechowywana w indeksie tablicy 5 : 22:45

Wielowymiarowe tablice

Tablice nie ograniczają się do jednego wymiaru, ale mogą mieć maksymalnie 60 wymiarów. Najbardziej powszechne są tablice dwuwymiarowe.
Przykład
W poniższym przykładzie deklarowana jest tablica wielowymiarowa z 3 wierszami i 4 kolumnami.
Private Sub tablica_demo_Click()
   Dim arr(2,3) as Variant        ' tablica ma 3 rzędy i 4 kolumny
   arr(0,0) = "Jabłko"
   arr(0,1) = "Pomarańcza"
   arr(0,2) = "Winogrona"          
   arr(0,3) = "Ananas"
   arr(1,0) = "Ogórek"          
   arr(1,1) = "Fasola"          
   arr(1,2) = "Marchew"          
   arr(1,3) = "Pomidor"          
   arr(2,0) = "Ziemniaki"            
   arr(2,1) = "Kanapka"           
   arr(2,2) = "Kawa"            
   arr(2,3) = "Orzechy"           
          
   msgbox("Wartość w indeksie tablicy 0,1 : " &  arr(0,1))
   msgbox("Wartość w indeksie tablicy 2,2 : " &  arr(2,2))
End Sub
Po wykonaniu powyższej funkcji generuje się następujący wynik.
Value stored in Array index : 0 , 1 : Pomarańcza
Value stored in Array index : 2 , 2 : Kawa

Instrukcja ReDim
Instrukcja ReDim służy do zadeklarowania zmiennych tablicy dynamicznej i alokacji lub realokacji przestrzeni pamięci.
Składnia
ReDim [Preserve] varname(subscripts) [, varname(subscripts)]
Opis parametrów
·      Preserve − opcjonalny parametr używany do zachowania danych w istniejącej tablicy po zmianie rozmiaru ostatniego wymiaru.
·      Varname − wymagany parametr, oznaczający 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 został zmieniony.
·        Uwaga: Po zmianie rozmiaru tablicy na mniejszą niż pierwotnie, dane w wyeliminowanych elementach zostaną utracone.

Private Sub tablica_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
 
   'sprawdzenie wyjścia
   For i = 0 to ubound(a)
      Msgbox a(i)
   Next
End Sub
Po wykonaniu powyższej funkcji generuje się następujący wynik.
XYZ
41.25
22
3
4
5
6
7

Tablice funkcje
W VBScript istnieją różne wbudowane funkcje, które pomagają programistom efektywnie radzić sobie z macierzami. Wszystkie metody używane w połączeniu z tablicami są wymienione poniżej. Kliknij nazwę metody, aby dowiedzieć się więcej na ten temat..
L.p.
Opis funkcji
1
Funkcja, która zwraca liczbę całkowitą odpowiadającą najmniejszemu indeksowi podrzędnemu danej tablicy.
2
Funkcja, która zwraca liczbę całkowitą, która odpowiada największemu indeksowi podrzędnemu danej tablicy.
3
Funkcja, która zwraca tablicę zawierającą określoną liczbę wartości. Podzieloną na podstawie ogranicznika.
4
Funkcja, która zwraca ciąg znaków zawierający określoną liczbę ciągów w tablicy. Jest to dokładnie przeciwna funkcja metody Split.
5
Funkcja, która zwraca tablicę zero, która zawiera podzbiór tablicy łańcuchów na podstawie określonych kryteriów filtrowania.
6
Funkcja, która zwraca wartość logiczną, która wskazuje, czy zmienną wejściową jest tablica.
7
Funkcja, która odzyskuje przydzieloną pamięć dla zmiennych tablicowych.



Brak komentarzy:

Prześlij komentarz