Najlepší sprievodca VBA (pre začiatočníkov), aký budete kedy potrebovať

Programovacia platforma VBA(VBA programming) , ktorá beží takmer vo všetkých produktoch balíka Microsoft Office(Microsoft Office) , je jedným z najvýkonnejších nástrojov, ktoré môže ktokoľvek použiť na zlepšenie používania týchto produktov.

Táto príručka VBA pre začiatočníkov vám ukáže, ako pridať ponuku vývojára(Developer) do vašej aplikácie balíka Office(Office) , ako vstúpiť do okna editora VBA a ako fungujú základné príkazy a slučky (VBA)VBA , aby ste mohli začať používať VBA v programoch Excel , Word , Powerpoint , Outlook a OneNote .

Táto príručka VBA používa najnovšiu verziu produktov balíka Microsoft Office(Microsoft Office) . Ak máte staršiu verziu, môžete vidieť drobné rozdiely oproti snímkam obrazovky.

Ako povoliť a používať editor VBA(How To Enable & Use The VBA Editor)

V žiadnom z produktov balíka Office(Office) použitých v tejto príručke si môžete všimnúť, že nemáte uvedenú ponuku vývojára(Developer) . Ponuka pre vývojárov je k dispozícii iba v programoch Excel(Excel) , Word , Outlook a Powerpoint . OneNote neponúka nástroj na úpravu kódu VBA z aplikácie, ale stále môžete použiť rozhranie OneNote API(OneNote API) na interakciu s OneNote z iných programov balíka Office(Office)

Dozviete sa, ako to urobiť v našej pripravovanej príručke Advanced VBA .

  • Ak chcete povoliť ponuku vývojára(Developer) v ľubovoľnom kancelárskom produkte, vyberte ponuku Súbor(File) a v ľavej navigačnej ponuke  vyberte položku Možnosti .(Options)
  • Uvidíte vyskakovacie menu Možnosti . (Options)V ľavej navigačnej ponuke vyberte položku Prispôsobiť pás s nástrojmi .(Customize Ribbon)

Ľavý zoznam obsahuje všetky dostupné ponuky a príkazy ponuky dostupné v danej aplikácii balíka Office(Office) . V zozname vpravo sú tie, ktoré sú momentálne dostupné alebo aktivované.

  • V zozname napravo by ste mali vidieť Vývojár(Developer) , ale nebude aktivovaný. Ak chcete aktivovať ponuku vývojára , (Developer)stačí(Just) začiarknuť políčko .

  • Ak sa na pravej strane nezobrazuje položka Vývojár(Developer) , zmeňte ľavú možnosť Vybrať príkazy(Choose commands) z rozbaľovacej ponuky na Všetky príkazy(All Commands) . Nájdite vývojára(Developer) v zozname a vyberte Add>> v strede, čím pridáte túto ponuku na pás s nástrojmi(Ribbon) .
  • Po dokončení vyberte OK .
  • Keď je ponuka vývojára(Developer) aktívna, môžete sa vrátiť do hlavného okna aplikácie a z hornej ponuky  vybrať položku Vývojár .(Developer)
  • Potom vyberte Zobraziť kód(View Code) zo skupiny Ovládacie prvky(Controls) na páse s nástrojmi, čím otvoríte okno editora VBA .

  • Tým sa otvorí okno editora VBA , kde môžete zadať kód, ktorý sa naučíte v niekoľkých nasledujúcich častiach.

  • Skúste pridať ponuku vývojára(Developer) do niekoľkých aplikácií balíka Office(Office) , ktoré používate každý deň. Keď sa naučíte otvárať okno editora VBA , pokračujte na ďalšiu časť tejto príručky.

Všeobecné tipy na programovanie VBA pre začiatočníkov(General VBA Programming Tips for Beginners)

Po otvorení editora VBA(VBA) si všimnete , že možnosti navigácie na ľavom paneli vyzerajú odlišne od jednej aplikácie balíka Office(Office) k druhej.

Je to preto, že dostupné objekty, kam môžete umiestniť kód VBA , závisia od toho, aké objekty sa v aplikácii nachádzajú. Napríklad v Exceli(Excel) môžete pridať kód VBA do objektov zošita alebo hárka. Vo Worde(Word) môžete do dokumentov pridať kód VBA . V Powerpointe(Powerpoint) iba pre moduly.

Nenechajte sa preto prekvapiť rôznymi ponukami. Štruktúra a syntax kódu VBA je rovnaká vo všetkých aplikáciách. Jediný rozdiel sú objekty, na ktoré môžete odkazovať, a akcie, ktoré s týmito objektmi môžete vykonať prostredníctvom kódu VBA .

Predtým, ako sa ponoríme do rôznych objektov a akcií, ktoré s nimi môžete vykonať prostredníctvom kódu VBA , pozrime sa najprv na najbežnejšiu štruktúru a syntax VBA , ktoré môžete použiť pri písaní kódu VBA .

Kam umiestniť kód VBA(Where To Put VBA Code)

Keď ste v editore VBA , musíte použiť dve rozbaľovacie polia v hornej časti okna úprav na výber objektu, ku ktorému chcete pripojiť kód, a kedy chcete, aby sa kód spúšťal.

Ak napríklad v Exceli(Excel) vyberiete Pracovný hárok(Worksheet) a Aktivovať(Activate) , kód sa spustí pri každom otvorení pracovného hárka. 

Ďalšie akcie pracovného hárka, ktoré môžete použiť na spustenie kódu VBA , zahŕňajú, keď sa hárok zmení, keď je zatvorený (deaktivovaný), keď sa spustí výpočet pracovného hárka a ďalšie.

Keď pridávate kód VBA do editora, vždy sa uistite, že ste kód VBA umiestnili na objekt a použili správnu akciu, ktorú chcete použiť na spustenie tohto kódu.

Výkazy VBA IF(VBA IF Statements)

Príkaz IF funguje vo VBA rovnako ako v akomkoľvek inom programovacom jazyku.

Prvá časť príkazu IF sa zaoberá tým, či je podmienka alebo súbor podmienok pravdivý. Tieto podmienky je možné spojiť operátorom AND alebo OR a prepojiť ich.

Jedným príkladom môže byť kontrola, či je známka v tabuľke nad alebo pod známkou „vyhovel“ a priradenie stavu „vyhovel“ alebo „nevyhovel“ inej bunke.

If Cells(2, 2) > 75 Then Cells(2, 3) = “Pass” Else Cells(2, 3) = “Fail”

Ak nechcete, aby bol celý výpis na jednom riadku, môžete ho rozdeliť do viacerých riadkov pridaním symbolu „_“ na koniec riadkov.

If Cells(2, 2) > 75 Then _
Cells(2, 3) = “Pass”  Else _
Cells(2, 3) = “Fail”

Použitie tejto techniky môže často značne zjednodušiť čítanie a ladenie kódu.

VBA pre ďalšie slučky(VBA For Next Loops)

Príkazy IF sú skvelé pre jednotlivé porovnania, ako napríklad vyššie uvedený príklad pohľadu na jednu bunku. Ale čo ak chcete prechádzať celým radom buniek a na každej urobiť rovnaký príkaz IF?

V tomto prípade by ste potrebovali slučku  FOR .

Ak to chcete urobiť, musíte použiť dĺžku rozsahu a prejsť cez túto dĺžku podľa počtu riadkov, ktoré obsahujú údaje.

Aby ste to dosiahli, musíte definovať premenné rozsahu a bunky a prechádzať cez ne. Budete tiež musieť definovať počítadlo, aby ste mohli zobraziť výsledky v príslušnom riadku. Takže váš kód VBA by mal najskôr tento riadok.

Dim rng As Range, bunka As Range (Dim rng As Range, cell As Range)
Dim rowCounter ako Integer(Dim rowCounter as Integer)

Veľkosť rozsahu definujte nasledovne. 

Set rng = Range(“B2:B7”)
rowCounter = 2

Nakoniec môžete vytvoriť slučku FOR , aby ste prešli každou bunkou v tomto rozsahu a vykonali porovnanie.

For Each cell In rng
   If cell.Value > 75 Then _
   Cells(rowCounter, 3) = "Pass" Else _
   Cells(rowCounter, 3) = "Fail"

   rowCounter = rowCounter + 1

Next cell

Po spustení tohto skriptu VBA(VBA script) uvidíte výsledky v skutočnej tabuľke.

VBA Kým slučky(VBA While Loops)

Slučka(Loop) While tiež prechádza sériou príkazov, rovnako ako slučka FOR , ale podmienkou pre pokračovanie v slučke je podmienka, ktorá zostáva pravdivá.

Môžete napríklad napísať rovnaký cyklus FOR vyššie ako cyklus WHILE jednoduchým použitím premennej rowCounter nasledovne.

While rowCounter < rng.Count + 2
   If Cells(rowCounter, 2) > 75 Then _
   Cells(rowCounter, 3) = "Pass" Else _
   Cells(rowCounter, 3) = "Fail"
   rowCounter = rowCounter + 1
Wend

Poznámka: Limit ukončenia rng.Count + 2 je povinný, pretože počítadlo riadkov začína na 2 a musí končiť na riadku 7, kde končia údaje. Počet v rozsahu (B2:B7) je však iba 6 a cyklus While sa skončí až vtedy, keď je počítadlo VÄČŠÍ(GREATER) ako počítadlo – takže hodnota posledného počítadla riadku musí byť 8 (alebo rng.Count + 2).

Slučku While môžete nastaviť aj takto:

While rowCounter <= rng.Count + 1

Počet rozsahov (6) môžete zvýšiť iba o 1, pretože akonáhle premenná rowCounter dosiahne koniec údajov (riadok 7), cyklus sa môže skončiť.

VBA Do Kým a Do kým(VBA Do While and Do Until Loops)

Slučky Do While a Do Until sú takmer totožné so slučkami While, ale fungujú mierne odlišne.

  • Kým slučka(While Loop) kontroluje, či je podmienka pravdivá na začiatku cyklu.
  • Slučka Do-While(Do-While Loop) kontroluje, či je podmienka pravdivá po vykonaní príkazov v slučke.
  • Slučka Do-Until(Do-Until Loop) kontroluje, či je podmienka po vykonaní cyklu stále nepravdivá.

V tomto prípade by ste prepísali slučku While vyššie takto, ako slučku Do-While.

Do
   If Cells(rowCounter, 2) > 75 Then _
   Cells(rowCounter, 3) = "Pass" Else _
   Cells(rowCounter, 3) = "Fail"
   
   rowCounter = rowCounter + 1
Loop While rowCounter < rng.Count + 2

V tomto prípade sa logika veľmi nemení, ale ak sa chcete uistiť, že porovnanie logiky prebehne po spustení všetkých príkazov (čo im umožní spustiť sa bez ohľadu na to, čo sa deje aspoň raz), potom Do-While alebo Do-Until loop je správna možnosť.

VBA Select Case Statements

Posledným typom logického príkazu, ktorý budete musieť pochopiť, aby ste mohli začať štrukturovať svoj kód VBA , sú príkazy Select Case .

Vzhľadom na vyššie uvedený príklad, povedzme, že chcete mať metódu hodnotenia, ktorá nie je len neúspešná. Namiesto toho chcete priradiť známku písmena od A po F.

Môžete to urobiť pomocou nasledujúceho príkazu Select Case :

For Each cell In rng
   
   Select Case cell

   Case 95 To 100
      Cells(rowCounter, 3) = "A"
   Case 85 To 94
      Cells(rowCounter, 3) = "B"
   Case 75 To 84
      Cells(rowCounter, 3) = "C"
   Case 65 To 74
      Cells(rowCounter, 3) = "D"
   Case 0 To 64
      Cells(rowCounter, 3) = "F"
   End Select

   rowCounter = rowCounter + 1

Next cell

Výsledná tabuľka po spustení tohto skriptu VBA vyzerá ako tabuľka nižšie.

Teraz viete všetko, čo potrebujete vedieť, aby ste mohli začať používať VBA vo svojich aplikáciách balíka Microsoft Office(Microsoft Office) .



About the author

Som vývojár freeware softvéru a zástanca Windows Vista/7. Napísal som niekoľko stoviek článkov na rôzne témy súvisiace s operačným systémom vrátane tipov a trikov, návodov na opravy a osvedčených postupov. Prostredníctvom svojej spoločnosti Help Desk Services ponúkam aj poradenské služby súvisiace s kanceláriou. Veľmi dobre rozumiem tomu, ako Office 365 funguje, jeho funkcie a ako ich najefektívnejšie používať.



Related posts