Tablice
Przykłady opisane w tej lekcji dostępne są w
arkuszu Excela VBA.xlsm, tylko ich
samodzielne przerobienie daje gwarancję zapamiętania tej lekcji.
Przykłady dla wszystkich lekcji szkolenia
Excel 2013: ExcelSzkolenie.pl
Cwiczenia Excel 2013.zip
Ta lekcja może być
obejrzana lub przeczytana poniżej.
Film wygląda
najlepiej jeśli będzie odtwarzany w rozdzielczości 720p HD, rozdzielczość można
zmienić dopiero po uruchomieniu filmu klikając na ikonie trybika
która pojawi się w prawym dolnym
rogu poniższego ekranu. Po kilku sekundach od zmiany obraz wyostrzy się.
Tablicę można sobie wyobrazić jako zbiór
danych znajdujących się w oznaczonych i ponumerowanych komórkach tabeli - coś w
rodzaju komórek Excela.
Tablice mogą być jednowymiarowe, w tym
przypadku kolejne komórki są oznaczone jedną cyfrą indeksu. Poniżej przedstawiam
2 przykłady.
Tablice
mogą być dwuwymiarowe, do modelu przedstawionego powyżej dochodzą jeszcze
wiersze, komórka oznaczona jest poprzez 2 liczby, kolumnę i wiersz.
Tablice
mające 3 wymiary należy wyobrazić sobie jako sześcian, w którym odwołując się
do jednej z komórek należy podać trzy liczby.
4
wymiarową tablicę można sobie wyobrazić jako rząd sześcianów, w którym 4 liczba
definiuje w którym z sześcianów należy poszukiwać interesującej nas danej, itd.
W poniższym
przykładzie deklaruję tablicę tablica1, która ma 7 elementów. Domyślną dolną
wartością indeksu dla pierwszej komórki tablicy jest zero, ostatni element ma
indeks 6, tablica zawiera więc 7 elementów.
Polecenie tablica1(0)
= "poniedziałek" wprowadza w tabelę pod indeksem 0 tekst
„poniedziałek”.
Funkcja MsgBox
wyświetla komunikat wykorzystujący zawartość tablicy.
Sub tablice1()
Dim tablica1(6) As String deklaracja tablicy zawierającej 7 elementów oznaczonych
cyframi od 0 do 6
tablica1(0) = "poniedziałek" ‘wprowadzanie danych do tablicy
... ‘wprowadzanie danych do tablicy
tablica1(6) = "niedziela" ‘wprowadzanie danych do tablicy
MsgBox "Ostatni dzień
tygodnia to: " & tablica1(6) ‘wykorzystanie danych z tablicy
End Sub
Jeżeli trudno Ci się
przyzwyczaić do tego, że pierwszy element to zero i aby pobrać 7 dzień tygodnia
należy wybrać element tablicy oznaczony indeksem 6, najwygodniej będzie
zadeklarować tablicę rozpoczynającą się od 1.
Sub tablice2()
Dim tablica2(1 To 7) As String ‘deklaracja
tablicy zawierającej 7 elementów oznaczonych cyframi od 1 do 7
tablica2(1) = "poniedziałek" ‘wprowadzanie danych do tablicy
... ‘wprowadzanie danych do tablicy
tablica2(7) = "niedziela" ‘wprowadzanie danych do tablicy
MsgBox "Ostatni dzień
tygodnia to: " & tablica2(7) ‘wykorzystanie danych z tablicy
End Sub
Dane do tablicy mogą
też być pobierane z arkusza Excela, ponieważ zazwyczaj nie korzysta się z
tablic dla kilku elementów, ale dla większej ich ilości wygodne jest
posługiwanie się pętlami.
Poniższe makro
zawiera także przykład przypisania danej z tabeli do zmiennej, oraz
wprowadzenia danych z tabeli do arkusza Excela.
(Poniższe makro
będzie działało poprawnie po aktywowaniu arkusza ‘Tablice’ z pliku VBA.xls)
Sub tablice3()
Dim tablica3(1 To 12) As String ‘deklaracja
tablicy zawierającej 12 elementów oznaczonych cyframi od 1 do 12
For wiersz = 1 To 12
tablica3(wiersz) = Cells(wiersz, 1).Value ‘wprowadzanie
danych do tablicy z arkusza z Excela
Next wiersz
miesiac8 = tablica3(8) ‘przypisanie wartości z tablicy do zmiennej, na tej samej
zasadzie dane z tablicy mogą być wykorzystywane w formułach, adresach itd
MsgBox "Ostatni miesiąc to: " &
tablica3(12) ‘wykorzystanie danych z tablicy przez Funkcję MsgBox
MsgBox "8 miesiąc to:
" & miesiac8 ‘wykorzystanie zmiennej, która powstała na podstawie danych
z tablicy przez Funkcję MsgBox
For wiersz = 1 To 12
Cells(wiersz, 3).Value = tablica3(wiersz) ‘wprowadzenie
danych z tablicy do arkusza Excela
Next wiersz
End Sub
Dla wielu prostych
zastosowań zamiast tablic tworzonych w VBA wystarczy posłużyć się funkcją
Array, która może funkcjonować zupełnie tak samo jak tablica a jej deklarowanie
i użycie jest bardzo proste.
Przykład użycia
funkcji Array został opisany w lekcji ‘Pętle Wielokrotne’.