Funkcia Join
Predstavte si, že do poľa zadávate znaky a pole je zároveň typu Variant. Je dosť nepraktické vypisovať s pomocou funkcie MsgBox jednotlivé prvky poľa. A tu vstupujú reťazce, ktoré by ste mali poznať z minulých dielov. Ako dostaneme z poľa typu napríklad Variant alebo Integer reťazec? Jednou z možností je funkcia Join.
1. príklad: Využitie funkcie Join
Sub macro REM začiatok procedúry Dim pole(4) As variant REM deklarácia poľa pole(0) = "a" REM priradenie do jednotlivých prvkov poľa pole(1) = "h" pole(2) = "o" pole(3) = "j" MsgBox Join(pole) REM využitie funkcie Join a následný výpis na obrazovku End Sub REM koniec procedúry
Výsledok makra
Rozbor makra: Funkcia Join zoberie celé pole a vráti ho ako String.
No fajn, podarilo sa nám vypísať celé pole ako reťazec. Ale asi tušíte, že to moc na reťazec (slovo) nevyzerá, resp. ako ho poznáme my ľudia. Aj na to myslí funkcia Join. V druhom parametri môžeme definovať, ako môže vyzerať reťazec.
2. príklad: Druhý parameter funkcie Join
Sub macro Dim pole(4) As variant pole(0) = "a" pole(1) = "h" pole(2) = "o" pole(3) = "j" MsgBox Join(pole, "") & Chr(10) & Join(pole, ".") REM experimentovanie s funkciou Join End Sub
Výsledok makra
Rozbor makra: Druhy parameter definuje, ako bude reťazec vyzerať. Ak chceme medzi jednotlivými prvkami pridať bodku, tak napíšeme ".".
Skúsime aj pole typu Integer. Čo myslíte, bude nejaká zmena vo fungovaní programu?
3. príklad: Funkcia Join a pole typu Integer
Sub macro Dim pole(5) As variant pole(0) = 45 pole(1) = 58 pole(2) = 66 pole(3) = 78 pole(4) = 458 MsgBox Join(pole, ",") REM výpis na obrazovku End Sub
Výsledok makra
Rozbor makra: Všetko funguje tak, ako má.
Funkcia Split
Zoberme si teraz opačnú situáciu. Máte reťazec, ale nutne ho potrebujete zmeniť na pole, aby ste urobili nejaké operácie s prvkami poľa v cykle. Ukážeme si jednoduchý príklad na konverziu z reťazca na pole s pomocou funkcie Split.
4. príklad: Využitie funkcie Split
Sub macro Dim retazec() As String Dim text As String text = "Tak co, uz vies programovat makra?" retazec() = Split(text) REM využitie funkcie Split MsgBox retazec(0) & retazec(1) & retazec(2) & retazec(3) & retazec(4) & retazec(5) REM výstup na obrazovku End Sub
Výsledok makra
Rozbor makra:
Funkcia Split zoberie reťazec a naseká ho do poľa podľa medzier. Časť reťazca oddelená medzerou, bude predstavovať jeden prvok poľa.
Funkcia Split nám umožňuje povedať, podľa čoho má rozlišovať reťazec na jednotlivé prvky poľa. V predvolenom stave je to medzera. Ale skúsme definovať miesto medzery bodku. Zmení sa vôbec niečo?
5. príklad: Druhý parameter funkcie Split
Sub macro Dim retazec() As String Dim text As String text = "Tak. co., uz. vies. programovat. makra?" retazec() = Split(text, ".") MsgBox retazec(0) & retazec(1) & retazec(2) & retazec(3) & retazec(4) & retazec(5) REM výpis na obrazovku End Sub
Výsledok makra
Rozbor makra: Zmenilo sa to, že funkcia Split ignoruje medzery. Prvky vytvára podľa bodiek v reťazci. A tak nám vyjde reťazec podľa našich vetných predstáv.
Funkcia Split nám ponúka i ďalšiu možnosť, V treťom parametri môžeme definovať, koľko má mať prvkov výsledne pole.
6. príklad: Tretí parameter funkcie Split
Sub macro Dim retazec() As String Dim text As String text = "Tak. co., uz. vies. programovat. makra?" retazec() = Split(text, ".", 3) MsgBox retazec(0) & retazec(1) & retazec(2) End Sub
Výsledok makra
Rozbor makra: Tretí parameter určil, že pole bude mať tri prvky. Keďže bodiek je v reťazci viacej ako počet prvkov budúceho poľa, tak funkcia Split prvé dva bodky spracuje a zvyšok reťazca sa stane súčasťou tretieho prvku.