Kódovanie Excel VBA: Práca s oknom kódu

Keď sa naučíte používať Excel VBA, strávite veľa času prácou v oknách kódu. Makrá, ktoré zaznamenáte, sú uložené v module a kód Excel VBA môžete zadať priamo v module VBA.

Minimalizácia a maximalizácia okien kódu VBA

Ak máte otvorených niekoľko projektov, VBE môže mať v danom čase veľa okien kódu.

Kódovanie Excel VBA: Práca s oknom kódu

Preťaženie okna kódu nie je pekný pohľad.

Kódové okná sú podobné oknám zošitov v Exceli. Môžete ich minimalizovať, maximalizovať, meniť ich veľkosť, skryť, preusporiadať atď. Pre väčšinu ľudí je oveľa jednoduchšie maximalizovať okno Kód, na ktorom pracujú. Umožní vám to zobraziť viac kódu a nebude vás rozptyľovať.

Ak chcete maximalizovať okno Kód, kliknite na tlačidlo Maximalizovať v jeho záhlaví (hneď vedľa X). Alebo jednoducho dvakrát kliknite na jeho záhlavie, aby ste ho maximalizovali. Ak chcete obnoviť pôvodnú veľkosť okna Kód, kliknite na tlačidlo Obnoviť. Keď je okno maximalizované, jeho titulok nie je viditeľný, takže tlačidlo Obnoviť nájdete pod titulkom VBE.

Niekedy možno budete chcieť zobraziť dve alebo viac okien kódu. Môžete napríklad porovnať kód v dvoch moduloch alebo skopírovať kód z jedného modulu do druhého. Okná môžete usporiadať manuálne alebo výberom položky Okno → Dlaždice vodorovne alebo Okno → Dlaždice vertikálne ich usporiadať automaticky.

Medzi oknami kódu môžete rýchlo prepínať stlačením Ctrl+F6. Ak túto kombináciu kláves zopakujete, budete neustále prechádzať všetkými otvorenými oknami kódu. Stláčaním Ctrl+Shift+F6 sa cyklicky prechádza oknami v opačnom poradí. (Viac informácií nájdete v týchto klávesových skratkách Excel VBA .)

Minimalizácia okna s kódom ho odstráni z cesty. Okno môžete zatvoriť aj kliknutím na tlačidlo Zavrieť (ktoré zobrazuje X) v záhlaví okna Kód. (Zatvorením okna ho iba skryjete; o nič neprídete.) Ak ho chcete znova otvoriť, stačí dvakrát kliknúť na príslušný objekt v okne Projekt. Mimochodom, práca s týmito oknami Code znie ťažšie, než v skutočnosti je.

Vytvorenie modulu VBA

Vo všeobecnosti môže modul Excel VBA obsahovať tri typy kódu:

  • Vyhlásenia: Jedno alebo viac informačných vyhlásení, ktoré poskytnete VBA. Môžete napríklad deklarovať typ údajov pre premenné, ktoré plánujete použiť, alebo nastaviť niektoré ďalšie možnosti pre celý modul. Vyhlásenia sú v podstate vyhlásenia o chode domácnosti. V skutočnosti nie sú popravení.
  • Podprocedúry: Sada programovacích inštrukcií, ktoré po spustení vykonajú nejakú akciu.
  • Procedúry funkcií: Sada programovacích inštrukcií, ktoré vracajú jednu hodnotu (v koncepcii podobná funkcii pracovného hárka, napríklad SUM).

Jeden modul VBA môže uložiť ľubovoľný počet procedúr Sub, procedúr funkcií a deklarácií. No, tam je limit - asi 64.000 znakov na module. Je nepravdepodobné, že sa čo i len priblížite k hranici 64 000 znakov. Ale ak áno, riešenie je jednoduché: Stačí vložiť nový modul.

Ako si usporiadate modul VBA, je úplne na vás. Niektorí ľudia uprednostňujú ponechať celý svoj kód VBA pre aplikáciu v jedinom module VBA; iní radi rozdelia kód do niekoľkých modulov. Je to osobná voľba, rovnako ako usporiadanie nábytku.

Získanie kódu VBA do modulu

Prázdny modul VBA je ako falošné jedlo, ktoré vidíte vo výkladoch niektorých čínskych reštaurácií; vyzerá to dobre, ale v skutočnosti vám to veľa nerobí. Predtým, ako budete môcť robiť čokoľvek zmysluplné, musíte mať v module VBA nejaký kód VBA. Kód VBA môžete získať do modulu VBA tromi spôsobmi:

  • Zadajte kód priamo.
  • Použite záznamník makier Excel na zaznamenanie vašich akcií a ich konverziu na kód VBA.
  • Skopírujte kód z jedného modulu a vložte ho do iného.

Priame zadanie kódu Excel VBA

Niekedy je najlepšia cesta tá najpriamejšia. Priame zadanie kódu zahŕňa ... no, priame zadanie kódu. Inými slovami, kód napíšete pomocou klávesnice. Zadávanie a úprava textu v module VBA funguje tak, ako by ste mohli očakávať. Text môžete vybrať, skopírovať, vystrihnúť, prilepiť a urobiť s ním ďalšie veci.

Pomocou klávesu Tab môžete odsadiť niektoré riadky, aby sa váš kód ľahšie čítal. Odsadzovanie nie je nutné, ale je dobrým zvykom si ho osvojiť. Keď budete študovať kódovanie Excel VBA, pochopíte, prečo je užitočné odsadenie riadkov kódu.

Jeden riadok kódu VBA môže byť taký dlhý, ako potrebujete. Možno však budete chcieť použiť znaky na pokračovanie riadkov na rozdelenie dlhých riadkov kódu. Ak chcete pokračovať v jednom riadku kódu (známy aj ako príkaz) z jedného riadku na ďalší, ukončite prvý riadok medzerou, za ktorou nasleduje podčiarkovník (_). Potom pokračujte vo vyhlásení na ďalšom riadku. A nezabudnite na priestor. Znak podčiarknutia, pred ktorým nie je medzera, túto úlohu nesplní.

Tu je príklad jedného príkazu rozdeleného do troch riadkov:

Selection.Sort Key1:=Range("A1"), _
  Poradie1:=xlVzostupne, Hlavička:=xlHádaj, _
  Orientácia:=xlTopToBottom

Tento príkaz by fungoval presne rovnako, ak by bol zadaný v jednom riadku (bez znakov na pokračovanie riadku). Všimnite si, že druhý a tretí riadok tohto vyhlásenia sú odsadené. Odsadenie je voliteľné, ale pomáha objasniť skutočnosť, že tieto riadky nie sú samostatné príkazy.

Inžinieri v bielom plášti, ktorí navrhli VBE, počítali s tým, že ľudia budú robiť chyby. Preto má VBE viacero úrovní vrátenia a zopakovania. Ak ste odstránili výpis, ktorý ste nemali mať, kliknite na tlačidlo Späť na paneli nástrojov (alebo stlačte Ctrl+Z), kým sa príkaz znova nezobrazí. Po vrátení späť môžete kliknúť na tlačidlo Znova a vykonať zmeny, ktoré ste vrátili.

Ste pripravení zadať skutočný kód? Skúste nasledujúce kroky:

Vytvorte nový zošit v Exceli.

Stlačením Alt+F11 aktivujte VBE.

Kliknite na názov nového zošita v okne Projekt.

Zvoľte Vložiť → Modul na vloženie modulu VBA do projektu.

Do modulu zadajte nasledujúci kód:

Sub GuessName()
Msg = "Je vaše meno " & Application.UserName & "?"
Ans = MsgBox(Msg, vbYesNo)
If Ans = vbNo Then MsgBox "Oh, nevadí."
If Ans = vbYes Then MsgBox "Musím byť psychická!"
End Sub

Umiestnite kurzor kdekoľvek v texte, ktorý ste napísali, a stlačením klávesu F5 vykonajte postup.

F5 je skratka pre Run → Run Sub/UserForm. Ak ste kód zadali správne, Excel vykoná procedúru a vy môžete reagovať na jednoduché dialógové okno. Text v dialógovom okne sa bude líšiť od textu zobrazeného tu.

Kódovanie Excel VBA: Práca s oknom kódu

Procedúra GuessName zobrazí toto dialógové okno.

Keď zadáte kód uvedený v kroku 5, môžete si všimnúť, že VBE vykonáva určité úpravy zadávaného textu. Napríklad po zadaní príkazu Sub VBE automaticky vloží príkaz End Sub. A ak vynecháte medzeru pred alebo za znakom rovnosti, VBE vloží medzeru za vás. VBE tiež zmení farbu a kapitalizáciu niektorých textov. Toto všetko je úplne normálne. Je to len spôsob VBE, ako udržať veci čisté a čitateľné.

Ak ste postupovali podľa predchádzajúcich krokov, práve ste napísali procedúru VBA Sub, tiež známu ako makro. Keď stlačíte F5, Excel spustí kód a bude postupovať podľa pokynov. Inými slovami, Excel vyhodnotí každý výrok a urobí to, čo ste mu povedali. (Nedovoľte, aby vám táto novonájdená sila stúpla do hlavy.) Toto makro môžete spustiť ľubovoľne veľakrát – hoci po niekoľkých desiatkach má tendenciu stratiť svoju príťažlivosť.

Pre záznam, toto jednoduché Excelové makro používa nasledujúce koncepty:

  • Definovanie procedúry Sub (prvý riadok)
  • Priradenie hodnôt premenným (Msg a Ans)
  • Reťazenie (spájanie) reťazca (pomocou operátora &)
  • Používanie vstavanej funkcie VBA (MsgBox)
  • Používanie vstavaných konštánt VBA (vbYesNo, vbNo a vbYes)
  • Použitie konštrukcie If-Then (dvakrát)
  • Ukončenie procedúry Sub (posledný riadok)

Použitie záznamníka makier Excel VBA

Ďalším spôsobom, ako môžete získať kód do modulu VBA, je zaznamenávanie vašich akcií pomocou záznamníka makier Excel.

Mimochodom, neexistuje absolútne žiadny spôsob, ako môžete zaznamenať postup GuessName zobrazený vyššie. Môžete zaznamenávať iba veci, ktoré môžete robiť priamo v Exceli. Zobrazenie okna správ nie je v bežnom repertoári Excelu. (Je to vec VBA.) Makrorekordér je užitočný, ale v mnohých prípadoch budete pravdepodobne musieť zadať aspoň nejaký kód ručne.

Tu je podrobný príklad, ktorý ukazuje, ako zaznamenať makro, ktoré vloží nový pracovný hárok a skryje všetky riadky okrem prvých desiatich a všetky stĺpce okrem prvých desiatich. Ak chcete vyskúšať tento príklad, začnite s novým, prázdnym excelovým zošitom a postupujte podľa týchto krokov:

Aktivujte pracovný hárok v zošite.

Postačí akýkoľvek pracovný hárok programu Excel.

Kliknite na kartu Vývojár a uistite sa, že nie je zvýraznená možnosť Použiť relatívne odkazy .

Toto makro sa zaznamenáva pomocou absolútnych referencií.

Vyberte Vývojár → Kód → Nahrať makro alebo kliknite na ikonu vedľa indikátora Pripravené na ľavom konci stavového riadka.

Excel zobrazí dialógové okno Záznam makra.

V dialógovom okne Zaznamenať makro pomenujte makro TenByTen, zadajte, že chcete makro uložiť do tohto zošita, a stlačte Shift+T pre klávesovú skratku.

Makro je možné spustiť stlačením Ctrl+Shift+T.

Kliknutím na tlačidlo OK spustíte nahrávanie. Excel automaticky vloží do projektu nový modul VBA, ktorý zodpovedá aktívnemu zošitu.

Od tohto bodu Excel konvertuje vaše akcie na kód VBA. Počas nahrávania sa ikona v stavovom riadku zmení na malý štvorec. Toto je pripomienka, že záznam makier je spustený. Môžete tiež kliknúť na túto ikonu a zastaviť záznam makier.

Kliknite na ikonu Nový hárok napravo od poslednej karty hárka.

Excel vloží nový pracovný hárok.

Vyberte celý stĺpec K (11. stĺpec) a stlačte Ctrl+Shift+šípka doprava; potom kliknite pravým tlačidlom myši na ľubovoľný stĺpec a v kontextovej ponuke vyberte príkaz Skryť.

Excel skryje všetky vybraté stĺpce.

Vyberte celý riadok 11 a stlačte Ctrl+Shift+šípka nadol; potom kliknite pravým tlačidlom myši na ľubovoľný vybratý riadok a v kontextovej ponuke vyberte príkaz Skryť.

Excel skryje všetky vybraté stĺpce.

Vyberte bunku A1.

Vyberte Vývojár → Kód → Zastaviť nahrávanie alebo kliknite na tlačidlo Zastaviť nahrávanie v stavovom riadku (malý štvorec). Excel prestane zaznamenávať vaše akcie.

Ak chcete zobraziť toto novo zaznamenané makro, stlačte Alt+F11, čím aktivujete VBE. Nájdite názov zošita v okne Projekt. Vidíte, že projekt má uvedený nový modul. Názov modulu závisí od toho, či ste pri spustení zaznamenávania makra mali v zošite nejaké ďalšie moduly. Ak nie, modul sa volá Module1. Dvojitým kliknutím na modul zobrazíte okno Kód pre modul.

Tu je kód vygenerovaný vašimi akciami:

Sub TenByTen()
'
Makro TenByTen
'
' Klávesová skratka: Ctrl+Shift+T
'
  Sheets.Add After:=Aktívny hárok
  Columns("K:K").Vyberte
  Rozsah(Výber, Výber.Koniec(xlDoprava)).Vybrať
  Selection.EntireColumn.Hidden = Pravda
  Riadky("11:11").Vyberte
  Rozsah(Výber, Výber.Koniec(xlDole)).Vybrať
  Selection.EntireRow.Hidden = Pravda
  Rozsah("A1").Vyberte
End Sub

To try this macro, activate any worksheet and press the shortcut key that you assigned in Step 4: Ctrl+Shift+T.

If you didn’t assign a shortcut key to the macro, don’t worry. Here’s how to display a list of all macros available and run the one you want:

Choose Developer → Code → Macros. Keyboard fans can press Alt+F8.

Either of these methods displays a dialog box that lists all the available macros.

Select the macro in the list (in this case, TenByTen).

Click the Run button.

Excel executes the macro, and you get a new worksheet with ten visible rows and ten visible columns.

You can execute any number of commands and perform any number of actions while the macro recorder is running. Excel dutifully translates your mouse actions and keystrokes to VBA code.

And, of course, you can also edit the macro after you record it. To test your new skills, try editing the macro so that it inserts a worksheet with nine visible rows and columns — perfect for a Sudoku puzzle.

Copying VBA code

The final method for getting code into a VBA module is to copy it from another module or from some other place (such as a website). For example, a Sub or Function procedure that you write for one project might also be useful in another project. Instead of wasting time reentering the code, you can activate the module and use the normal Clipboard copy-and-paste procedures. (You’re probably rather fond of the keyboard shortcuts Ctrl+C to copy and Ctrl+V to paste.) After pasting the code into a VBA module, you can modify the code if necessary.

Mimochodom, na webe nájdete množstvo príkladov kódu VBA. Ak ich chcete vyskúšať, vyberte kód vo svojom prehliadači a stlačením klávesov Ctrl+C ho skopírujte. Potom aktivujte modul a stlačením Ctrl+V ho prilepte.

Keď kopírujete kód z webovej stránky, niekedy to vyžaduje určitú opravu. Znaky úvodzoviek môžu byť napríklad „inteligentné úvodzovky“ a musia sa previesť na jednoduché úvodzovky. A niekedy sa namotajú dlhé rady. Vo VBE sa dajú ľahko zistiť chybné vyhlásenia, pretože sa zobrazujú červenou farbou.


Ako zablokovať Microsoft Word otváranie súborov v režime iba na čítanie v systéme Windows

Ako zablokovať Microsoft Word otváranie súborov v režime iba na čítanie v systéme Windows

Ako zablokovať Microsoft Word otváranie súborov v režime len na čítanie v systéme Windows Microsoft Word otvára súbory v režime len na čítanie, takže ich nie je možné upravovať? Nebojte sa, metódy sú uvedené nižšie

Ako opraviť nesprávnu tlač dokumentov Microsoft Word

Ako opraviť nesprávnu tlač dokumentov Microsoft Word

Ako opraviť chyby pri tlači nesprávnych dokumentov Microsoft Word Chyby pri tlači dokumentov Word so zmeneným typom písma, chaotickými odsekmi, chýbajúcim textom alebo strateným obsahom sú pomerne časté. Avšak, nie

Vymažte kresby perom a zvýrazňovačom na svojich PowerPointových snímkach

Vymažte kresby perom a zvýrazňovačom na svojich PowerPointových snímkach

Ak ste použili pero alebo zvýrazňovač na kreslenie na powerpointové snímky počas prezentácie, môžete si kresby uložiť pre ďalšiu prezentáciu alebo ich vymazať, aby ste pri ďalšom zobrazení začali s čistými powerpointovými snímkami. Ak chcete vymazať kresby perom a zvýrazňovačom, postupujte podľa týchto pokynov: Vymazanie riadkov jedna na […]

Obsah knižnice štýlov v SharePointe 2010

Obsah knižnice štýlov v SharePointe 2010

Knižnica štýlov obsahuje súbory CSS, súbory XSL (Extensible Stylesheet Language) a obrázky používané preddefinovanými vzorovými stránkami, rozloženiami strán a ovládacími prvkami v SharePointe 2010. Ak chcete nájsť súbory CSS v knižnici štýlov publikačnej lokality: Vyberte Akcie lokality→Zobraziť Všetok obsah stránky. Zobrazí sa obsah stránky. Knižnica štýlov sa nachádza v […]

Formátovanie čísel v tisíckach a miliónoch v správach Excel

Formátovanie čísel v tisíckach a miliónoch v správach Excel

Nezahlcujte svoje publikum obrovskými číslami. V programe Microsoft Excel môžete zlepšiť čitateľnosť svojich tabúľ a zostáv formátovaním čísel tak, aby sa zobrazovali v tisíckach alebo miliónoch.

Ako zdieľať a sledovať lokality SharePoint

Ako zdieľať a sledovať lokality SharePoint

Zistite, ako používať nástroje sociálnych sietí SharePoints, ktoré umožňujú jednotlivcom a skupinám komunikovať, spolupracovať, zdieľať a spájať sa.

Ako previesť dátumy do Julianových formátov v Exceli

Ako previesť dátumy do Julianových formátov v Exceli

Juliánske dátumy sa často používajú vo výrobných prostrediach ako časová pečiatka a rýchla referencia pre číslo šarže. Tento typ kódovania dátumu umožňuje maloobchodníkom, spotrebiteľom a servisným zástupcom identifikovať, kedy bol produkt vyrobený, a teda aj vek produktu. Juliánske dátumy sa používajú aj v programovaní, armáde a astronómii. Rôzne […]

Ako vytvoriť Access Web App

Ako vytvoriť Access Web App

V Accesse 2016 môžete vytvoriť webovú aplikáciu. Čo je to teda webová aplikácia? Web znamená, že je online a aplikácia je len skratka pre „aplikáciu“. Vlastná webová aplikácia je online databázová aplikácia, ku ktorej sa pristupuje z cloudu pomocou prehliadača. Vytvárate a udržiavate webovú aplikáciu vo verzii pre počítače […]

Panel rýchleho spustenia v SharePointe 2010

Panel rýchleho spustenia v SharePointe 2010

Väčšina stránok v SharePointe 2010 zobrazuje zoznam navigačných prepojení na paneli Rýchle spustenie pozdĺž ľavej strany stránky. Panel Rýchle spustenie zobrazuje prepojenia na odporúčaný obsah lokality, ako sú zoznamy, knižnice, lokality a publikačné stránky. Panel Rýchle spustenie obsahuje dva veľmi dôležité odkazy: Odkaz na celý obsah lokality: […]

Čo znamenajú chybové hlásenia v programe Excel?

Čo znamenajú chybové hlásenia v programe Excel?

Pre jednoduché problémy Riešiteľ v Exceli zvyčajne rýchlo nájde optimálne hodnoty premennej Riešiteľ pre cieľovú funkciu. V niektorých prípadoch má však Riešiteľ problém nájsť hodnoty premennej Riešiteľ, ktoré optimalizujú cieľovú funkciu. V týchto prípadoch Riešiteľ zvyčajne zobrazí hlásenie alebo chybové hlásenie, ktoré popisuje alebo diskutuje problém, ktorý […]