Čo je pole VBA v Exceli a ako ho naprogramovať

VBA je súčasťou balíka Microsoft Office už mnoho rokov. Aj keď VBA(VBA) nemá plnú funkčnosť a výkon úplnej aplikácie VB, poskytuje používateľom balíka Office(Office) flexibilitu na integráciu produktov balíka Office(Office) a automatizáciu práce, ktorú v nich robíte.

Jedným z najvýkonnejších nástrojov dostupných vo VBA je možnosť načítať celý rad údajov do jednej premennej nazývanej pole. Načítaním údajov týmto spôsobom môžete manipulovať alebo vykonávať výpočty s týmto rozsahom údajov rôznymi spôsobmi.

Čo je teda pole VBA ? V tomto článku odpovieme na túto otázku a ukážeme vám, ako ju použiť vo vašom vlastnom skripte VBA(your own VBA script) .

Čo je pole VBA?

Používanie poľa VBA v (VBA)Exceli(Excel) je veľmi jednoduché, ale pochopenie konceptu polí môže byť trochu zložité, ak ste žiadne ešte nepoužívali.

Predstavte si(Think) pole ako krabicu s časťami vo vnútri. Jednorozmerné pole je pole s jedným riadkom sekcií. Dvojrozmerné pole je krabica s dvoma riadkami sekcií.

Do každej sekcie tohto „boxu“ môžete vkladať údaje v ľubovoľnom poradí.

Na začiatku skriptu VBA musíte definovať tento „box“ definovaním poľa VBA . Ak teda chcete vytvoriť pole, ktoré môže obsahovať jednu množinu údajov (jednorozmerné pole), napíšte nasledujúci riadok.

Dim arrMyArray(1 To 6) As String

Neskôr vo svojom programe môžete umiestniť údaje do ľubovoľnej sekcie tohto poľa odkazom na sekciu v zátvorkách.

arrMyArray(1) = "Ryan Dube"

Pomocou nasledujúceho riadku môžete vytvoriť dvojrozmerné pole.

Dim arrMyArray(1 To 6,1 to 2) As Integer

Prvé číslo predstavuje riadok a druhé je stĺpec. Takže vyššie uvedené pole môže obsahovať rozsah so 6 riadkami a 2 stĺpcami.

Každý prvok tohto poľa môžete načítať údajmi nasledovne.

arrMyArray(1,2) = 3

Tým sa nahrá 3 do bunky B1.

Pole môže obsahovať akýkoľvek typ údajov ako regulárnu premennú, ako sú reťazce, booleovské hodnoty, celé čísla, pohyblivé čísla a ďalšie.

Číslo v zátvorke môže byť tiež premenné. Programátori bežne používajú For Loop na počítanie cez všetky sekcie poľa a načítanie dátových buniek v tabuľke do poľa. Ako to urobiť, uvidíte neskôr v tomto článku.

Ako naprogramovať pole VBA v Exceli

Poďme sa pozrieť na jednoduchý program, v ktorom možno budete chcieť načítať informácie z tabuľky do viacrozmerného poľa.

Ako príklad sa pozrime na tabuľku predaja produktov, kde chcete z tabuľky vytiahnuť meno obchodného zástupcu, položku a celkový predaj.

Všimnite si, že keď vo VBA odkazujete na riadky alebo stĺpce, počítate riadky a stĺpce(rows and columns) od 1 vľavo hore. Takže stĺpec rep je 3, stĺpec položky je 4 a celkový stĺpec je 7.

Ak chcete načítať tieto tri stĺpce do všetkých 11 riadkov, budete musieť napísať nasledujúci skript.

Dim arrMyArray(1 To 11, 1 To 3) As String
Dim i As Integer, j As Integer
For i = 2 To 12
For j = 1 To 3
arrMyArray(i-1, j) = Cells(i, j).Value
Next j
Next i

Všimnete si, že ak chcete preskočiť riadok hlavičky, číslo riadka v prvom vzhľade For musí začínať na 2, a nie na 1. To znamená, že pri načítavaní hodnoty bunky musíte odpočítať 1 od hodnoty riadka poľa. do poľa pomocou buniek(Cells) (i, j).Value.

Kam vložiť skript poľa VBA(Your VBA Array Script)

Ak chcete naprogramovať skript VBA do (VBA)Excelu(Excel) , musíte použiť editor VBA . Dostanete sa k tomu výberom ponuky Vývojár(Developer) a výberom položky Zobraziť kód(View Code) v sekcii Ovládacie prvky(Controls) na páse s nástrojmi.

Ak vývojára(Developer) v ponuke nevidíte , budete ho musieť pridať. Ak to chcete urobiť, výberom položky Súbor(File) a možnosti(Options) otvorte okno Možnosti programu Excel.

Zmeňte výber príkazov z rozbaľovacej ponuky na Všetky príkazy(All Commands) . V ľavej ponuke vyberte položku Vývojár a kliknutím na tlačidlo (Developer)Pridať(Add) ho presuňte na panel vpravo. Začiarknutím políčka ho povolíte a výberom OK dokončite.

Keď sa otvorí okno Editor kódu(Code Editor) , skontrolujte, či je na ľavej table vybratý hárok, v ktorom sa nachádzajú vaše údaje. V ľavom rozbaľovacom zozname vyberte položku Pracovný hárok a v pravej časti (Worksheet)Aktivovať(Activate) . Tým sa vytvorí nový podprogram s názvom Worksheet_Activate ().

Táto funkcia sa spustí vždy, keď sa otvorí tabuľkový súbor. Prilepte kód na tablu skriptov v tomto podprograme.

Tento skript bude fungovať cez 12 riadkov a načíta meno zástupcu zo stĺpca 3, položku zo stĺpca 4 a celkový predaj zo stĺpca 7.

Po dokončení oboch cyklov For bude dvojrozmerné pole arrMyArray obsahovať všetky údaje, ktoré ste zadali z pôvodného listu.

Manipulácia s poliami v Exceli VBA

Povedzme, že chcete uplatniť 5 % daň z obratu na všetky konečné predajné ceny a potom zapísať všetky údaje do nového hárku.

Môžete to urobiť pridaním ďalšej slučky For za prvú s príkazom na zápis výsledkov do nového hárku.

For k = 2 To 12
Sheets("Sheet2").Cells(k, 1).Value = arrMyArray(k - 1, 1)
Sheets("Sheet2").Cells(k, 2).Value = arrMyArray(k - 1, 2)
Sheets("Sheet2").Cells(k, 3).Value = arrMyArray(k - 1, 3)
Sheets("Sheet2").Cells(k, 4).Value = arrMyArray(k - 1, 3) * 0.05
Next k

Toto „vyloží“ celé pole do Hárok2(Sheet2) , pričom ďalší riadok bude obsahovať súčet sumy dane vynásobený 5 %.

Výsledný list bude vyzerať takto.

Ako vidíte, polia VBA v (VBA)Exceli(Excel) sú mimoriadne užitočné a rovnako všestranné ako ktorýkoľvek iný trik Excelu(any other Excel trick)

Vyššie uvedený príklad predstavuje veľmi jednoduché použitie poľa. Môžete vytvárať oveľa väčšie polia a vykonávať triedenie, priemerovanie alebo mnoho ďalších funkcií s údajmi, ktoré v nich ukladáte.

Ak chcete byť skutočne kreatívni, môžete dokonca vytvoriť dve polia obsahujúce rozsah buniek(containing a range of cells) z dvoch rôznych hárkov a vykonať výpočty medzi prvkami každého poľa.

Aplikácie sú obmedzené len vašou fantáziou.



About the author

Som počítačový profesionál s viac ako 10 ročnou praxou. Vo voľnom čase rada pomáham v kancelárii a učím deti používať internet. Moje schopnosti zahŕňajú veľa vecí, ale najdôležitejšie je, že viem pomáhať ľuďom riešiť problémy. Ak potrebujete niekoho, kto vám môže pomôcť s niečím súrne, alebo chcete len nejaké základné tipy, obráťte sa na mňa!



Related posts