Väčšina programovacích jazykov podporuje polia vrátane VBA. Pole je skupina premenných, ktoré majú spoločný názov. Na konkrétnu premennú v poli odkazujete pomocou názvu poľa a čísla indexu v zátvorkách. Môžete napríklad definovať pole 12 reťazcových premenných, ktoré budú obsahovať názvy mesiacov v roku. Ak pole pomenujete MonthNames , prvý prvok poľa môžete označovať ako MonthNames (1), druhý prvok ako MonthNames (2) atď.
Deklarovanie polí
Pred použitím poľa ho musíte deklarovať. Bez výnimky. Na rozdiel od normálnych premenných je VBA na toto pravidlo veľmi prísny. Pole deklarujete pomocou príkazu Dim alebo Public, rovnako ako deklarujete bežnú premennú. Musíte však zadať aj počet prvkov v poli. Urobíte to zadaním prvého indexového čísla, kľúčového slova Komu a posledného indexového čísla – všetko v zátvorkách. Nasledujúci príklad ukazuje, ako deklarovať pole 100 celých čísel:
Dim MyArray (1 až 100) ako celé číslo
Keď deklarujete pole, môžete určiť iba horný index. Ak vynecháte spodný index, VBA predpokladá, že je 0. Preto oba nasledujúce príkazy deklarujú rovnaké pole so 101 prvkami:
Dim MyArray (0 až 100) ako celé číslo
Dim MyArray (100) ako celé číslo
Ak chcete, aby VBA predpokladalo, že 1 (namiesto 0) je nižší index pre vaše polia, zahrňte nasledujúce vyhlásenie do sekcie Deklarácie v hornej časti modulu:
Základ možnosti 1
Tento príkaz núti VBA použiť 1 ako prvé číslo indexu pre polia, ktoré deklarujú iba horný index. Ak je tento príkaz prítomný, nasledujúce príkazy sú identické a oba deklarujú 100-prvkové pole:
Dim MyArray (1 až 100) ako celé číslo
Dim MyArray (100) ako celé číslo
Viacrozmerné polia
Všetky polia vytvorené v predchádzajúcich príkladoch sú jednorozmerné polia. Predstavte si jednorozmerné polia ako jeden riadok hodnôt. Polia, ktoré vytvoríte vo VBA, môžu mať až 60 rozmerov – aj keď zriedka potrebujete viac ako dva alebo tri rozmery v poli. Nasledujúci príklad deklaruje 81-celočíselné pole s dvoma rozmermi:
Dim MyArray (1 až 9, 1 až 9) ako celé číslo
Toto pole si môžete predstaviť tak, že zaberá maticu 9 x 9 – ideálne na ukladanie všetkých čísel v sudoku.
Ak chcete odkazovať na konkrétny prvok v tomto poli, musíte zadať dve čísla indexu (podobné jeho „riadku“ a jeho „stĺpcu“ v matici). Nasledujúci príklad ukazuje, ako môžete priradiť hodnotu prvku v tomto poli:
MyArray (3, 4) = 125
Tento príkaz priraďuje hodnotu jednému prvku v poli. Ak uvažujete o poli z hľadiska matice 9 x 9, priradí sa 125 prvku umiestnenému v treťom riadku a štvrtom stĺpci matice.
Tu je postup, ako deklarovať trojrozmerné pole s 1 000 prvkami:
Dim My3DArray (1 až 10, 1 až 10, 1 až 10) ako celé číslo
Trojrozmerné pole si môžete predstaviť ako kocku. Vizualizácia poľa viac ako troch rozmerov je zložitejšia.
Dynamické polia
Môžete tiež vytvárať dynamické polia. Dynamické pole nemá prednastavený počet prvkov. Deklarujte dynamické pole s prázdnou sadou zátvoriek:
Dim MyArray () As Integer
Predtým, ako budete môcť použiť toto pole, musíte použiť príkaz ReDim, aby ste povedali VBA, koľko prvkov pole má. Zvyčajne sa počet prvkov v poli určuje počas spustenia kódu. Príkaz ReDim môžete použiť ľubovoľný počet krát a meniť veľkosť poľa tak často, ako je potrebné. Nasledujúci príklad ukazuje, ako zmeniť počet prvkov v dynamickom poli. Predpokladá, že premenná NumElements obsahuje hodnotu, ktorú vypočítal váš kód.
ReDim MyArray (1 až NumElements)
Keď zmeníte dimenziu poľa pomocou ReDim, vymažete všetky hodnoty aktuálne uložené v prvkoch poľa. Zničeniu starých hodnôt sa môžete vyhnúť použitím kľúčového slova Zachovať. Nasledujúci príklad ukazuje, ako môžete zachovať hodnoty poľa pri zmene dimenzie poľa:
ReDim Preserve MyArray (1 až NumElements)
Ak má MyArray momentálne desať prvkov a vykonáte predchádzajúci príkaz s NumElements rovným 12, prvých desať prvkov zostane nedotknutých a pole má miesto pre dva ďalšie prvky (až do počtu obsiahnutého v premennej NumElements). Ak sa však NumElements rovná 7, prvých sedem prvkov sa zachová, ale zvyšné tri prvky sa vyrovnajú.