logo

Kontaktujte nás

Máte ďalšie otázky, na ktoré ste tu zatiaľ nenašli odpoveď? Kontaktujte nás mailom, či telefonicky, požadované informácie radi doplníme.

kontakt

Prečo VBA v Exceli


Excel je v súčasnosti  asi najčastejšie používaný program. Či sa používa na vytváranie tabuliek a výpočtov nad údajmi, na spracovávanie údajov  napr.  filtrovanie alebo vytváranie súhrnov na Exceli všetci oceňujeme jeho automatickú odozvu a intuitívnosť v používaní. V tomto krátkom blogu Vám ponúkame dva jednoduché, názorné a praktické príklady pre využitie programovania - kódu v jazyku VBA.

Takže, prečo sa naučiť programovať vo VBA v Exceli?

Kurz Excel - programovanie vo VBA - základyMnohokrát v Exceli vykonávame opakujúce sa operácie alebo pri pokročilom používaní potrebujeme niečo, čo v Exceli chýba. V tomto prípade nám Excel (a nielen on, ale všetky aplikácie Office) ponúka prispôsobenie alebo automatizáciu s vlastným VBA kódom.

VBA (Visual Basic for Applications) je programovací jazyk, ktorý na základe radu príkazov vykonáva operácie s objektami v aplikácii. To znamená, že Excel VBA pracuje so všetkým čo sa v Exceli nachádza – zošit, hárok, graf atď. a vykonáva s nimi rôzne operácie napr. výber, kopírovanie, zmena farby podľa zadaných príkazov.

K vytváraniu kódu VBA môžeme pristúpiť

  • Užívateľsky – použijeme nahrávanie makra cez rekordér postupným vykonávaním príkazov alebo

  • Programátorsky – napíšeme si kód sami v prostredí editora VBA. Pozn. editor otvoríme v Exceli klávesovou skratkou Alt + F11.

Nahrávanie makier má svoje obmedzenia a vytvorený kód je často neefektívny. Programátorský prístup nám umožňuje písať efektívny kód s možnosťami, ktoré makro rekordér neponúka. Veľmi často sa používa kombinácia oboch prístupov.

Pre napísanie kódu VBA samozrejme potrebujeme znalosti jazyka. Ale čo skutočne potrebujeme sú znalosti ako napísať kód, ktorý:

  • sa odkazuje na objekty v Exceli -  či je to rozsah buniek, hárok, zošit alebo graf,

  • nastaví alebo zmení vlastnosť tohto objektu – napr. vyfarbí ho na červeno, 

  • zadefinuje premennú a priradí jej hodnotu,

  • vyhodnotí podmienku pre rozhodovanie ( klasické Excelovské IF ) – vo VBA kóde máme viacero možností, ale  s IF sa stretneme,

  • zopakuje vykonanú činnosti – napríklad pre všetky hárky v zošite, alebo bunky v rozsahu.

Nemusíme teda byť programátori, aby sme napísali kód, ktorého použite je pritom veľmi široké. Tu je len niekoľko príkladov:

  • automatizácia úloh, ktoré vykonávate pravidelne napr. každodenné stiahnutie údajov, vytvorenie a úprava výslednej tabuľky a jej zaslanie kolegovi,

  • opakované vykonávanie príkazov – z tabuľky vyfiltrovať údaje pre jednotlivého obchodníka,   následne ich skopírovať a uložiť do samostatného súboru,

  • vytvorenie vlastnej funkcie  - rozšírenie funkčnosti Excelu o používateľom definované funkcie

  • vytvorenie formulára  - vytvorenie pomôcky pre užívateľov súboru pre zadávanie údajov do databázy v Exceli  alebo nastavovanie podmienok filtrovania,

  • vytvorenie doplnku (add – in) – rozšírenie funkčnosti Excelu napr. kontrola extrémnych hodnôt, ak chcete vykonávať prognózy.

Pre názornosť dva príklady kódu s vysvetlením čo kód vykoná:

Príklad číslo 1 - odkrytie všetkých skrytých hárkov jedným príkazov

Ak pracujeme v Exceli so skrytými hárkami môžeme ich odkrývať len po jednom. Čo ak mám ale v súbore veľa skrytých hárkov? Vieme si prácu zjednodušiť napísaním VBA kódu, ktorý môžeme použiť kedykoľvek.

Sub Odkry_hárky()
               For Each Harok in Worksheets
                               Harok. Visible = True
               Next
End Sub

Vysvetlenie príkazov:

Príkaz Sub a End sub vymedzuje začiatok a koniec makra.

Príkaz For Each .. in spolu s Next vytvárajú opakovanie činnosti.

Príkaz Harok. Visibile nastavuje vlastnosť hárku, aby bol viditeľný.

V súbore odkrytie hárkov.xlsm nájdete dané makro. Ak sú v súbore skryté hárky, všetky odkryjete spustením makra pomocou klávesovej skratky CTRL + SHIFT + A. Pozor na spustenie makra musíte povoliť použitie makier.

Príklad číslo 2 - rozdelenie tabuľky na samostatné hárky na základe podmienky filtra

V tabuľke máme projekty pre viacerých obchodníkov a potrebujeme rozkopírovať údaje pre konkrétnych obchodníkov  Ján, Jana a Zuzana do samostatných hárkov. Pri klasickom postupe by sme si vyfiltrovali prvého obchodníka, vybrali len viditeľné bunky a tie skopírovali do vloženého nového hárku. Tieto činnosti by sme museli zopakovať ešte dva krát.

Sub obchodnici()
Dim udaje As Range, mena As Variant
    mena = Array("ján", "jana", "zuzana")
    Sheets("projekty").Range("a1").CurrentRegion.Select
    Set udaje = Selection
    For i = LBound(mena) To UBound(mena)
        udaje.AutoFilter Field:=5, Criteria1:=mena(i)
        udaje.SpecialCells(xlCellTypeVisible).Copy
       Set NovyHarok = Sheets.Add
       With NovyHarok
         .Range("a1").PasteSpecial Paste:=xlPasteColumnWidths, Operation:=xlNone, _
         SkipBlanks:=False, Transpose:=False
         .Paste
         .Name = mena(i)
         .Move After:=Sheets(Sheets.Count)
         .Range("A1").Select
       End With 
   Next i  
    Sheets("projekty").Select
    Range("A1").Select
    udaje.AutoFilter
End Sub

Vysvetlenie príkazov:

Príkaz Select – vždy znamená výber. 

Príkaz  For i =  To   a Next vytvára cyklus pre presný počet opakovaní.

Príkaz With a End with používame pre nastavenie viacerých vlastností alebo vykonanie akcií pre jeden objekt v tomto prípade pre pridaný hárok a nastavíme napríklad jeho meno.

Paste znamená vložiť. V tomto prípade najprv vložíme zo skopírovanej oblasti šírku stĺpcov a potom hodnoty pre konkrétneho obchodníka.

Dim, Set alebo príkaz meno = slúžia na vytvorenie alebo priradenie hodnoty premennej

V súbore obchod.xlsm nájdete makro na skopírovanie údajov za konkrétnych obchodníkov do samostatných hárkov. Makro spustíte pomocou klávesovej skratky CTRL + SHIFT + Q. Opäť na spustenie makra musíte povoliť použitie makier.

Oba príklady si môžete stiahnuť na tomto odkaze.

Ak Vás tento článok zaujal, v počítačovej škole IVIT na kurze Excel - programovanie vo VBA - základy  Vám ponúkame možnosť spraviť prvé kroky v tomto programovacom jazyku VBA. Znalosť  Excelu, jeho funkcií a automatizácie pomocou kódu VBA je možnosť ako pracovať efektívnejšie. Pochopenie a schopnosť pracovať s makrami Vám určite uľahčí život, šetrí čas a dáva Vám výhodu pred ostatnými - školenie VBA Vám túto možnosť ponúka.

Autor: Monika Ivanová, lektorka spoločnosti IVIT – Inštitút vzdelávania informačných technológií, s.r.o.

 



Naši
partneri:  
Microsoft Partner Network Naši
klienti:  
DHL Danfoss Embraco Matador Osram Dalkia Slovenská sporiteľňa

           

close

Prihlásenie

Pre prihlásenie zadajte Vaše prihlasovacie meno a heslo, ktoré ste si zvolili pri registrácií. Ak ste zabudli heslo kliknite na obnovenie hesla.

Obnova heslaRegistrácia
Zobraziť heslo
Zapamätať
close

Odber newslettra

Zadajte nasledovné údaje a odoberajte zdarma Newsletter s aktuálnymi termínmi školení, typmi, trikmi a článkami z oblasti IT.

Polia označené hviezdičkou (*) sú povinné.
./
../../