Tablice przydają się do tymczasowego przechowywania ciągów danych określonego typu i do szybszych obliczeń. Typ zmiennej przechowywanej w tablicy może być różnoraki w zależności od potrzeb, może to być ciąg znaków alfanumerycznych (String), byte, integer.
Podam jeden z wielu sposobów deklarowania przykładowej tablicy dwuwymiarowej (100 wierszy i 3 kolumny) przechowującej dane typu string
Niech nasza tablica nazywa się po prostu Tablica
Dim Tablica (100,3) as String
Jest to definicja tablicy statycznej kiedy wiemy ile wierszy i kolumn będzie zawierać.
Jeżeli nasza tablica ma za zadanie przechowywać dane, których ilości nie możemy na razie przewidzieć wówczas piszemy
Dim Tablica () as String
Ma to na celu zapobieganie zbędnemu przewymiarowaniu tablicy i zabezpiecza nas przed jej niedoszacowaniem
Weźmy na przykład określenie maksymalnej liczby wierszy i kolumn w danym arkuszu excela o czym pisałem w kilku poprzedzających wpisach a głównie we wpisie Excel 2010 - określenie maks. używanej ilości wierszy i kolumn za pomocą kodu VBA.
jeśli te zmienne (ilość wierszy i ilość kolumn) nazwiemy odpowiednio
wiersze, kolumny to aby dookreślić tablicę piszemy
Redim Tab(wiersze, kolumny)
i nasza tablica będzie ich mieć tyle ile trzeba
Zwykle jest jednak tak że pobieramy do tablicy tylko niektóre konkretne kolumny z arkusza ich liczbę (kolumn) jesteśmy w stanie przewidzieć.
Teraz zagadnienie innego typu: jak zapisać dane do odpowiedniej kolumny w tablicy ?
Niech za przykład posłuży nam taka tabelka

Pętla For … Next która będzie pomocna przy wczytywaniu będzie wyglądać mniej więcej tak:
For i =1 to 3
Tablica(i,1)=Cells(i,1)
Tablica(i,2)=Cells(i,2)
Tablica(i,3)=Cells(i,3)
Next
dla każdego i (w sensie wiersza) będą zapisane kolejno dane do trzech kolumn tabeli
Gdybyśmy chcieli dla sprawdzenia pobrać z tablicy element Tablica(3,3) to byłaby to wartość “30″ piszę w cudzysłowiu gdyż byłyby to znaki 3 i 0 dlatego że jest to tablica z elementami typu String
UWAGA na koniec:
Jeśli dopiero zaczynasz przygodę z makrami w VBA to powyższe przykłady zapisuj wewnątrz procedury Sub Twoja_nazwa ()
np.
Sub ZapisDoTablicy()
Dim Tablica (3,3) as String
Sheets(”Arkusz1″).select
‘ Wskazujemy z którego arkusza pobieramy dane do tablicy
for i =1 to 3
Tablica(i,1)=Cells(i,1)
Tablica(i,2)=Cells(i,2)
Tablica(i,3)=Cells(i,3)
Next
‘ sprawdzamy element Tablica(3,3)
MsgBox Tablica(3, 3)
End sub
Taką procedurę zapisz w module (nie w kodzie arkusza)
Na górze modułu napisz jeszcze taki wiersz
Option base 1
Daje to informację dla VBA że twoje tablice są liczone od 1-go elementu a nie domyślnie od zerowego. W stosunku do tablic jest to ułatwienie.
Jak to wygląda w VBA w anglojęzycznej wersji Excel 2010

Jak to działa

Książka, która może pomóc w lepszym zrozumieniu tego tematu:

Pobierz fragment