Funkcia Array
Ukážeme si alternatívnu deklaráciu poľa. Použijeme pri tom funkcie Array. Výhodou tohto postupu je, že nemusíme pri deklarácii definovať typ premenných. Prečo je to tak, sa ochvíľu dozviete.
1. príklad: Deklarácia prázdneho poľa
Sub EmptyArray REM začiatok makra Dim a() REM deklarácia prázdneho poľa Dim number As Integer REM deklarácia premennej typu Integer number = 55 REM priradenie hodnoty danej premennej Dim number1 As Integer number1 = 66 a() = Array(number, number1) REM priradenie hodnôt prvkom poľa MsgBox a(0) & " " & a(1) REM výpis na obrazovku End Sub REM koniec procedúry
Výsledok makra
Rozbor makra:
Na začiatku deklarujeme pomocou signatúry a() prázdne pole. Potom s pomocou slova Array() nakŕmime prázdne pole. A nakoniec jednoducho vypíšeme jednotlivé prvky poľa. Samotná funkcia Array vracia pole typu Variant. Skúsme v druhom príklade do Array vložiť rôzne typy premenných.
2. príklad: Experiment s funkciou Array
Sub EmptyArray Dim a() a() = Array("ahoj", 55, "Dnes je ale zima!", 56.55) MsgBox a(0) & " " & a(1) & " " & a(2) & " " & a(3) End Sub
Výsledok makra
Rozbor makra:
Pamätáte, že návratová hodnota funkcie Array je Variant? Znamená to, že do prvkov poľa môžete dať rôzne typy premenných.
Funkcia DimArray
Funkciu DimArray môžeme použiť miesto deklarácie a() resp a(5 To 10) a ďalších variácii.
3. príklad: Použitie funkcie DimArray
Sub EmptyArray Dim a() a() = Array("ahoj", 55, "Dnes je ale zima!", 56.55) a() = DimArray(2) REM vytvoríme prázdne pole o veľkostí 3 prvkov (0,1,2) MsgBox a(0) & " " & a(1) & " " & a(2) End Sub
Výsledok makra
Rozbor makra:
DimArray nám vracia prázdne pole typu Variant. Výsledok, ako vidíte je samozrejme taktiež prázdny.
Je premenná pole?
Ako zistiť, či je nejaká premenná pole? Slúži nám na to funkcia isArray.
4. príklad: Testujeme premenné
Sub Array Dim a(5) As Integer Dim number As Integer REM vo výpise využijeme funkciu isArray, ktorá otestuje, či premenná je pole MsgBox "Prva premenna: " & isArray(a()) & Chr(10) & "Druha premenna: " & isArray(number) End Sub
Výsledok makra
Rozbor makra:
Funkcia isArray vracia pravdivostnú hodnotu True, ak je premenná pole a False, ak ním nie je.
Najnižší a najvyšší index
Predstavte si situáciu, že potrebujete narýchlo zistiť, kde začína pole a končí. Inak povedané, aby ste sa vyhli pretečeniu pamäte, musíte zistiť, kde začína alebo končí index poľa a následne to využili napríklad formou cyklu. Najnižší index poľa zisťuje funkcia LBound a ten najvyšší UBound.
5. príklad: Využitie funkcii LBound a UBound
Sub macro Dim a() a = Array("ahoj", 55, "Dnes je ale zima!", 56.55, "AAA", "mnauky") REM vo výpise zistíme najnižší a najvyšší index poľa MsgBox "Začiatok poľa v indexe: " & LBound(a()) & Chr(10) & "Koniec poľa v indexe: " & UBound(a()) End Sub
Výsledok makra
Rozbor makra:
Funkcia LBound vracia najnižší index poľa a funkcia UBound vracia ten najvyšší.
Funkcia ReDim
Ak by vám doteraz spomenuté deklarácie poľa nestačili, predstavujem vám ďalšiu funkciu, ktorá deklaruje pole. Volá sa ReDim. Ale predsa, funguje podobne, ako deklarácia Dim alebo DimArray. Prípona „Re“ evokuje, že sa niečo opakuje. Aj funkcia ReDim mení vlastností už deklarovaného poľa.
6. príklad: Využitie funkcie ReDim
Sub macro Dim pole(5) As Integer pole(1) = 55 ReDim pole(5) As Integer REM deklarácia pomocou funkcie ReDim pole(1) = 7789 MsgBox pole(1) End Sub
Výsledok makra
Rozbor makra:
Práve vďaka funkcie ReDim môžete znovu deklarovať pole. Samozrejme, je to len jedna z ciest. Výber je už len na vás.