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.
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.
Mnohokrá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á:
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 SubVysvetlenie 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.
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 SubVysvetlenie 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.