Pojmenování dílčích a funkcí Excelu VBA

Stejně jako lidé, domácí mazlíčci a hurikány musí mít každá procedura Excel VBA Sub a Function svůj název. Ačkoli je naprosto přijatelné pojmenovat svého psa Hairball Harris, obvykle není dobrý nápad používat takový volný přístup při pojmenovávání procedur Excl VBA. Při pojmenovávání procedur Excel VBA musíte dodržovat několik pravidel:

  • Můžete použít písmena, čísla a některé interpunkční znaky, ale první znak musí být písmeno.
  • V názvu nelze použít žádné mezery ani tečky.
  • VBA nerozlišuje mezi velkými a malými písmeny.
  • V názvu procedury nemůžete použít žádný z následujících znaků: #, $, %, &, @, ^, * nebo !. Jinými slovy, vaše jméno procedury nemůže vypadat jako komiksová nadávka.
  • Pokud píšete proceduru Function pro použití ve vzorci, nepoužívejte název, který vypadá jako adresa buňky (například A1 nebo B52). Excel ve skutečnosti takové názvy funkcí umožňuje, ale proč dělat věci ještě matoucími, než už jsou?
  • Názvy procedur nesmí být delší než 255 znaků. (Samozřejmě byste nikdy neudělali název procedury tak dlouhý.)

V ideálním případě název procedury popisuje účel rutiny. Osvědčeným postupem je vytvořit název kombinací slovesa a podstatného jména – například ProcessData, PrintReport, Sort_Array nebo CheckFilename.

Někteří programátoři upřednostňují používání názvů podobných větám, které poskytují úplný popis postupu. Některé příklady zahrnují WriteReportToTextFile a Get_Print_Options_and_Print_Report. Použití takto dlouhých názvů má své klady i zápory. Na jednu stranu jsou taková jména popisná a většinou jednoznačná. Na druhou stranu jejich psaní trvá déle. Každý si vyvine styl pojmenování, ale pokud vaše makro není jen rychlé a nečisté dočasné makro, je dobré být popisný a vyhnout se nesmyslným názvům jako DoIt, Update, Fix a stále oblíbené Macro1.

Provádění procedur Excel VBA Sub

Ačkoli v tomto okamžiku možná nevíte mnoho o vývoji procedur Sub, je důležité vědět, jak tyto procedury provádět. Procedura Sub je bezcenná, pokud nevíte, jak ji provést.

Mimochodem, provedení procedury Sub znamená totéž jako spuštění nebo volání procedury Sub. Můžete použít jakoukoli terminologii, kterou chcete.

Sub VBA Sub můžete spustit mnoha způsoby; to je jeden z důvodů, proč můžete s procedurami Sub dělat tolik užitečných věcí. Zde je vyčerpávající seznam způsobů, jak provést proceduru Sub:

  • Vyberte Spustit → Spustit Sub/UserForm (ve VBE). Excel provede proceduru Sub, ve které je umístěn kurzor. Tento příkaz nabídky má dvě alternativy: klávesu F5 a tlačítko Run Sub/UserForm na standardním panelu nástrojů ve VBE. Tyto metody nefungují, pokud procedura vyžaduje jeden nebo více argumentů.
  • Použijte dialogové okno Makro aplikace Excel. Toto pole otevřete výběrem Vývojář → Kód → Makra nebo výběrem Zobrazit → Makra → Makra. Nebo přeskočte pás karet a stiskněte Alt+F8. Když se zobrazí dialogové okno Makro, vyberte požadovanou proceduru Sub a klikněte na Spustit. Toto dialogové okno uvádí pouze procedury, které nevyžadují argument.
  • Stiskněte Ctrl+klávesu (nebo Ctrl+Shift+klávesu) přiřazenou k proceduře Sub (za předpokladu, že jste ji přiřadili).
  • Klepněte na tlačítko nebo obrazec na listu. K tlačítku nebo tvaru musí být přiřazena procedura Sub – což je velmi snadné.
  • Z jiné procedury Sub, kterou píšete.
  • Klepněte na tlačítko, které jste přidali na panel nástrojů Rychlý přístup.
  • Z vlastní položky, kterou jste přidali na pás karet.
  • Když dojde k události. Tyto události zahrnují otevření sešitu, zavření sešitu, uložení sešitu, provedení změny buňky, aktivaci listu a další věci.
  • Z okna Immediate ve VBE. Stačí zadat název procedury Sub a stisknout Enter.

Některé z těchto technik jsou popsány níže. Chcete-li pokračovat, musíte zadat proceduru Sub do modulu VBA:

Začněte s novým sešitem.

Stisknutím Alt+F11 aktivujte VBE.

Vyberte sešit v okně Projekt.

Zvolte Vložit → Modul pro vložení nového modulu.

Do modulu zadejte následující:

Sub ShowCubeRoot()
  Num = InputBox("Zadejte kladné číslo")
  MsgBox Num ^ (1/3) & "je odmocnina."
End Sub

Tento postup požádá uživatele o číslo a poté zobrazí kořenovou krychli tohoto čísla v okně se zprávou. Tyto obrázky ukazují, co se stane, když provedete tento postup.

Pojmenování dílčích a funkcí Excelu VBA

Pomocí vestavěné funkce VBA InputBox získáte číslo.

Zde také zjistíte, co se děje prostřednictvím funkce MsgBox.

Pojmenování dílčích a funkcí Excelu VBA

Zobrazení odmocniny čísla pomocí funkce MsgBox.

Mimochodem, ShowCubeRoot není příkladem dobrého makra. Nekontroluje chyby, takže snadno selže. Zkuste kliknout na tlačítko Storno ve vstupním poli nebo zadejte záporné číslo. Každá akce má za následek chybovou zprávu.

Přímé provedení procedury Excel VBA Sub

Jedním ze způsobů, jak provést tento postup, je provést to přímo z modulu VBA, ve kterém jste jej definovali. Následuj tyto kroky:

Aktivujte VBE a vyberte modul VBA, který obsahuje proceduru.

Přesuňte kurzor kamkoli do kódu procedury.

Stiskněte F5 (nebo zvolte Spustit → Spustit Sub/UserForm).

Odpovězte na vstupní pole a klepněte na OK.

Postup zobrazí třetí mocninu zadaného čísla.

Nemůžete použít Spustit → Spustit Sub/UserForm ke spuštění procedury Sub, která používá argumenty, protože nemáte žádný způsob, jak argumenty předat proceduře. Pokud procedura obsahuje jeden nebo více argumentů, jediný způsob, jak ji provést, je zavolat ji z jiné procedury — která musí poskytnout argument(y).

Provedení procedury z dialogového okna Makro aplikace Excel

Většinu času spouštíte procedury Sub z Excelu, nikoli z VBE. Následující kroky popisují, jak spustit makro pomocí dialogového okna Makro aplikace Excel:

Pokud pracujete ve VBE, aktivujte Excel.
Rychlá cesta je stisknutím Alt+F11.

Vyberte Vývojář → Kód → Makra (nebo stiskněte Alt+F8).
Excel zobrazí zde zobrazené dialogové okno.Pojmenování dílčích a funkcí Excelu VBA

V dialogovém okně Makro jsou uvedeny všechny dostupné procedury Sub.

Vyberte makro.

Klikněte na Spustit (nebo poklepejte na název makra v seznamu).

Dialogové okno Makro nezobrazuje procedury Sub, které používají argumenty. Je to proto, že neexistuje způsob, jak specifikovat argumenty.

Spuštění makra Excel VBA pomocí klávesové zkratky

Dalším způsobem, jak spustit makro, je stisknout jeho klávesovou zkratku. Než však budete moci použít tuto metodu, musíte makru přiřadit klávesovou zkratku.

Když začnete nahrávat makro, máte možnost přiřadit klávesovou zkratku v dialogovém okně Záznam makra . Pokud vytvoříte proceduru bez použití záznamníku maker, můžete přiřadit klávesovou zkratku (nebo změnit existující klávesovou zkratku) pomocí následujících kroků:

Vyberte Vývojář → Kód → Makra.

Ze seznamu vyberte název procedury Sub.

V tomto příkladu se procedura jmenuje ShowCubeRoot.

Klepněte na tlačítko Možnosti.
Excel zobrazí zde zobrazené dialogové okno Možnosti makra.Pojmenování dílčích a funkcí Excelu VBA

Dialogové okno Možnosti maker umožňuje nastavit možnosti pro vaše makra.

Klikněte na možnost Klávesová zkratka a zadejte písmeno do pole označeného Ctrl.

Písmeno, které zadáte, odpovídá kombinaci kláves, kterou chcete použít pro spuštění makra. Pokud například zadáte malé písmeno c, můžete makro spustit stisknutím Ctrl+C. Pokud zadáte velké písmeno, musíte ke kombinaci kláves přidat klávesu Shift. Pokud například zadáte C, můžete makro spustit stisknutím Ctrl+Shift+C.

Klepnutím na tlačítko OK zavřete dialogové okno Možnosti makra a poté klepnutím na tlačítko Storno zavřete dialogové okno Makro.
Poté, co jste přiřadili klávesovou zkratku, můžete stisknutím této kombinace kláves provést makro. Klávesová zkratka nefunguje, pokud je přiřazena k makru, které používá argument.

Klávesové zkratky, které přiřadíte makrům, mají přednost před vestavěnými klávesovými zkratkami aplikace Excel. Například Ctrl+C je standardní klávesová zkratka pro kopírování dat. Pokud makru přiřadíte Ctrl+C, nemůžete ke kopírování použít Ctrl+C. To obvykle není velký problém, protože Excel téměř vždy poskytuje jiné způsoby provádění příkazů.

Spuštění procedury Excel VBA z tlačítka nebo tvaru

Někdy se vám může líbit nápad přiřadit makro tlačítku (nebo jinému tvaru) na listu. Chcete-li přiřadit makro Excel k tlačítku, postupujte takto:

Aktivujte pracovní list.

Přidejte tlačítko ze skupiny Ovládací prvky formuláře.
Chcete-li zobrazit skupinu Ovládací prvky formuláře, zvolte Vývojář → Ovládací prvky → Vložit.Pojmenování dílčích a funkcí Excelu VBA

Pás karet zobrazující ovládací prvky dostupné po klepnutí na tlačítko Vložit na kartě Vývojář.

Klepněte na nástroj Tlačítko ve skupině Ovládací prvky formuláře.

Je to první tlačítko v první řadě ovládacích prvků.

Přetažením v listu vytvořte tlačítko.
Po přidání tlačítka do listu Excel přečte vaši myšlenku a zobrazí dialogové okno Přiřadit makro zobrazené níže.Pojmenování dílčích a funkcí Excelu VBA

Když přidáte tlačítko do listu, Excel automaticky zobrazí dialogové okno Přiřadit makro.

Vyberte makro, které chcete tlačítku přiřadit.

Klepněte na tlačítko OK.

Poté, co provedete přiřazení, kliknutím na tlačítko se makro spustí – stejně jako kouzlo.

Když přidáte tlačítko, všimněte si, že rozevírací seznam zobrazuje dvě sady ovládacích prvků: Ovládací prvky formuláře a Ovládací prvky ActiveX. Tyto dvě skupiny ovládacích prvků vypadají podobně, ale ve skutečnosti jsou velmi odlišné. V praxi jsou ovládací prvky formuláře jednodušší.

Makro můžete také přiřadit jakémukoli jinému tvaru nebo objektu. Předpokládejme například, že chcete spustit makro, když uživatel klepne na objekt Obdélník. Následuj tyto kroky:

Přidejte obdélník do listu.

Vložte obdélník výběrem Vložit → Ilustrace → Tvary.

Klepněte pravým tlačítkem myši na obdélník.

Z místní nabídky zvolte Přiřadit makro.

Vyberte makro v dialogovém okně Přiřadit makro.

Klepněte na tlačítko OK.
Po provedení těchto kroků kliknutím na obdélník spustí přiřazené makro.

Provedení procedury z jiné procedury Excel VBA

Můžete také spustit proceduru Excel VBA z jiné procedury. Chcete-li to zkusit, postupujte takto:

Aktivujte modul VBA, který obsahuje rutinu ShowCubeRoot.

Zadejte tento nový postup (buď nad nebo pod kódem ShowCubeRoot – nezáleží na tom):

Sub NewSub()
  Zavolejte ShowCubeRoot
End Sub

Po dokončení jednoduše spustíte makro NewSub.

Nejjednodušší způsob, jak to udělat, je přesunout kurzor kamkoli v rámci kódu NewSub a stisknout F5. Všimněte si, že tato procedura NewSub jednoduše spustí proceduru ShowCubeRoot.

Mimochodem, klíčové slovo Call je nepovinné. Příkaz může obsahovat pouze název procedury Sub. Použitím klíčového slova Call je však naprosto jasné, že je volána procedura.

Provádění procedur funkcí Excel VBA

Funkce, na rozdíl od procedur Sub, lze provádět pouze dvěma způsoby:

  • Voláním funkce z jiné procedury Sub nebo procedury Function
  • Pomocí funkce ve vzorci listu

Vyzkoušejte tuto jednoduchou funkci. Zadejte jej do modulu VBA:

Funkce CubeRoot(číslo)
  CubeRoot = číslo ^ (1 / 3)
End Function

This function is pretty wimpy; it merely calculates the cube root of the number passed to it as its argument. It does, however, provide a starting point for understanding functions. It also illustrates an important concept about functions: how to return the value. (You do remember that a function returns a value, right?)

Notice that the single line of code that makes up this Function procedure performs a calculation. The result of the math (number to the power of 1⁄3) is assigned to the variable CubeRoot. Not coincidentally, CubeRoot is also the name of the function. To tell the function what value to return, you assign that value to the name of the function.

Calling the Excel VBA function from a Sub procedure

Because you can’t execute a function directly, you must call it from another procedure. Enter the following simple procedure in the same VBA module that contains the CubeRoot function:

Sub CallerSub()
  Ans = CubeRoot(125)
  MsgBox Ans
End Sub

When you execute the CallerSub procedure, Excel displays a message box that contains the value of the Ans variable, which is 5.

Here’s what’s going on: The CubeRoot function is executed, and it receives an argument of 125. The calculation is performed by the function’s code (using the value passed as an argument), and the function’s returned value is assigned to the Ans variable. The MsgBox function then displays the value of the Ans variable.

Try changing the argument that’s passed to the CubeRoot function and run the CallerSub macro again. It works just like it should — assuming that you give the function a valid argument (a positive number).

By the way, the CallerSub procedure could be simplified a bit. The Ans variable is not really required unless your code will use that variable later. You could use this single statement to obtain the same result:

MsgBox CubeRoot(125)

Calling an Excel VBA function from a worksheet formula

Now it’s time to call this VBA Function procedure from a worksheet formula. Activate a worksheet in the same workbook that holds the CubeRoot function definition. Then enter the following formula in any cell:

=CubeRoot(1728)

The cell displays 12, which is indeed the cube root of 1,728.

As you might expect, you can use a cell reference as the argument for the CubeRoot function. For example, if cell A1 contains a value, you can enter =CubeRoot(A1). In this case, the function returns the number obtained by calculating the cube root of the value in A1.

You can use this function any number of times in the worksheet. Like Excel’s built-in functions, your custom functions appear in the Insert Function dialog box. Click the Insert Function toolbar button, and choose the User Defined category. As shown below, the Insert Function dialog box lists your very own function.

Pojmenování dílčích a funkcí Excelu VBA

The CubeRoot function appears in the User Defined category of the Insert Function dialog box.

If you want the Insert Function dialog box to display a description of the function, follow these steps:

Choose Developer → Code →  Macros.
Excel displays the Macro dialog box, but CubeRoot doesn’t appear in the list. (CubeRoot is a Function procedure, and this list shows only Sub procedures.) Don’t fret.

Type the word CubeRoot in the Macro Name box.

Click the Options button.

Enter a description of the function in the Description box.

Click OK to close the Macro Options dialog box.

Close the Macro dialog box by clicking the Cancel button.
This descriptive text now appears in the Insert Function dialog box.

This image shows the CubeRoot function being used in worksheet formulas.

Pojmenování dílčích a funkcí Excelu VBA

Using the CubeRoot function in formulas.

By now, things may be starting to come together for you.


Jak zablokovat aplikaci Microsoft Word v otevírání souborů v režimu pouze pro čtení v systému Windows

Jak zablokovat aplikaci Microsoft Word v otevírání souborů v režimu pouze pro čtení v systému Windows

Jak zablokovat aplikaci Microsoft Word v otevírání souborů v režimu pouze pro čtení v systému Windows Aplikace Microsoft Word otevírá soubory v režimu pouze pro čtení, takže je nelze upravovat? Nebojte se, metody jsou uvedeny níže

Jak opravit nesprávný tisk dokumentů Microsoft Word

Jak opravit nesprávný tisk dokumentů Microsoft Word

Jak opravit chyby při tisku nesprávných dokumentů Microsoft Word Chyby při tisku dokumentů Word se změněným písmem, chaotickými odstavci, chybějícím textem nebo ztraceným obsahem jsou poměrně časté. Nicméně ne

Vymažte kresby perem a zvýrazňovačem na snímcích PowerPoint

Vymažte kresby perem a zvýrazňovačem na snímcích PowerPoint

Pokud jste použili pero nebo zvýrazňovač ke kreslení na snímky aplikace PowerPoint během prezentace, můžete kresby uložit pro další prezentaci nebo je vymazat, takže až ji příště ukážete, začnete s čistými snímky aplikace PowerPoint. Chcete-li vymazat kresby perem a zvýrazňovačem, postupujte podle těchto pokynů: Mazání čar jedna na […]

Obsah knihovny stylů v SharePointu 2010

Obsah knihovny stylů v SharePointu 2010

Knihovna stylů obsahuje soubory CSS, soubory XSL (Extensible Stylesheet Language) a obrázky používané předdefinovanými vzorovými stránkami, rozvržení stránek a ovládací prvky v SharePointu 2010. Chcete-li najít soubory CSS v knihovně stylů webu pro publikování: Vyberte Akce webu→ Zobrazit Veškerý obsah webu. Zobrazí se obsah webu. Knihovna stylů se nachází v […]

Formátování čísel v tisících a milionech v sestavách Excel

Formátování čísel v tisících a milionech v sestavách Excel

Nezahlcujte své publikum gargantuovskými čísly. V aplikaci Microsoft Excel můžete zlepšit čitelnost řídicích panelů a sestav formátováním čísel tak, aby se zobrazovaly v tisících nebo milionech.

Jak sdílet a sledovat weby SharePoint

Jak sdílet a sledovat weby SharePoint

Naučte se používat nástroje sociálních sítí SharePoints, které umožňují jednotlivcům a skupinám komunikovat, spolupracovat, sdílet a propojovat se.

Jak převést data do juliánských formátů v aplikaci Excel

Jak převést data do juliánských formátů v aplikaci Excel

Juliánská data se často používají ve výrobním prostředí jako časové razítko a rychlý odkaz pro číslo šarže. Tento typ kódování data umožňuje maloobchodníkům, spotřebitelům a servisním zástupcům identifikovat, kdy byl produkt vyroben, a tím i stáří produktu. Juliánská data se také používají v programování, armádě a astronomii. Odlišný […]

Jak vytvořit webovou aplikaci Access

Jak vytvořit webovou aplikaci Access

Webovou aplikaci můžete vytvořit v Accessu 2016. Co je tedy vlastně webová aplikace? Web znamená, že je online, a aplikace je jen zkratka pro „aplikaci“. Vlastní webová aplikace je online databázová aplikace přístupná z cloudu pomocí prohlížeče. Webovou aplikaci vytváříte a udržujete ve verzi pro počítače […]

Panel rychlého spuštění v SharePointu 2010

Panel rychlého spuštění v SharePointu 2010

Většina stránek v SharePointu 2010 zobrazuje seznam navigačních odkazů na panelu Snadné spuštění na levé straně stránky. Panel Snadné spuštění zobrazuje odkazy na doporučený obsah webu, jako jsou seznamy, knihovny, weby a stránky publikování. Panel Snadné spuštění obsahuje dva velmi důležité odkazy: Odkaz na veškerý obsah webu: […]

Co znamenají chybové zprávy Řešitel v Excelu?

Co znamenají chybové zprávy Řešitel v Excelu?

U jednoduchých problémů Řešitel v Excelu obvykle rychle najde optimální hodnoty proměnné Řešitel pro účelovou funkci. Ale v některých případech má Řešitel problém najít hodnoty proměnné Řešitel, které optimalizují účelovou funkci. V těchto případech Řešitel obvykle zobrazí zprávu nebo chybovou zprávu, která popisuje nebo popisuje problém, který […]