Podprogram Excel VBA: Jak volat Sub ve VBA s příkladem
⚡ Chytré shrnutí
Podprogram VBA v Excelu seskupuje blok kódu, který provádí úlohu bez vrácení hodnoty. Tato stránka se zabývá pravidly pojmenování, syntaxí funkce Sub, voláním funkce Sub z příkazového tlačítka a rozdílem mezi funkcí Sub a funkcí.
Co je podprogram ve VBA?
A Podprogram ve VBA je část kódu, která provádí konkrétní úlohu popsanou v kódu, ale nevrací výsledek ani hodnotu. Podprogramy se používají k rozdělení velkých částí kódu na malé zvládnutelné části. Podprogramy lze vyvolat vícekrát odkudkoli v programu.
Řekněme, že jste vytvořili uživatelské rozhraní s textovými poli pro přijímání uživatelských vstupních dat. Můžete vytvořit podprogram, který vymaže obsah textových polí. Podprogram volání VBA je v takovém scénáři vhodný, protože nechcete vracet žádné výsledky.
Proč používat podprogramy
- Rozdělte kód na malý spravovatelný kód: Průměrný počítačový program má tisíce a tisíce řádků zdrojového kódu. To přináší složitost. Podprogramy pomáhají vyřešit tento problém tím, že rozdělují program na malé zvládnutelné kousky kódu.
- Code opakovaná použitelnost. Řekněme, že máte program, který potřebuje přístup k databázi, téměř všechna okna v programu budou muset spolupracovat s databází. Namísto psaní samostatného kódu pro tato okna můžete vytvořit funkci, která zpracovává všechny databázové interakce. Poté jej můžete volat z libovolného okna, které chcete.
- Podprogramy a funkce se dokumentují samy. Řekněme, že máte funkci vypočítatÚrok půjčky a další, která říká connectToDatabase. Pouhým pohledem na název podprogramu/funkce bude programátor schopen říci, co program dělá.
Před zapsáním názvu kompilátor očekává, že bude dodržovat krátkou sadu pravidel.
Pravidla pojmenování podprogramů a funkcí
Chcete-li používat podprogramy a funkce, existuje sada pravidel, která musíte dodržovat.
- Název podprogramu nebo funkce volání VBA nemůže obsahovat mezeru
- Název podřízeného volání nebo funkce aplikace Excel VBA by měl začínat písmenem nebo podtržítkem. Nemůže začínat číslem nebo speciálním znakem
- Název podprogramu nebo funkce nemůže být klíčové slovo. Klíčové slovo je slovo, které má zvláštní význam VBA. Slova jako Private, Sub, Function a End atd. jsou příklady klíčových slov. Kompilátor je používá pro konkrétní úkoly.
Po zvolení platného názvu se samotná deklarace řídí pevným vzorem.
Syntaxe podprogramu VBA
Abyste mohli postupovat podle tohoto příkladu, budete muset povolit kartu Vývojář v aplikaci Excel. Pokud nevíte, jak povolit kartu Vývojář, přečtěte si tutoriál Ovládací prvky VBA v Excelu
ZDE v syntaxi,
Private Sub mySubRoutine(ByVal arg1 As String, ByVal arg2 As String) 'do something End Sub
Vysvětlení syntaxe
| Code | Akce |
|---|---|
|
|
|
|
|
|
Následující podprogram přijímá jméno a příjmení a zobrazuje je v okně se zprávou.
Nyní naprogramujeme a provedeme tuto dílčí proceduru. Podívejme se na to.
Jak volat Sub ve VBA
Níže je uveden postup krok za krokem, jak volat Sub ve VBA:
- Navrhněte uživatelské rozhraní a nastavte vlastnosti pro uživatelské ovládací prvky.
- Přidejte podprogram
- Napište kód události kliknutí pro příkazové tlačítko, které volá podprogram
- Otestujte aplikaci
Krok 1) Uživatelské rozhraní
Navrhněte uživatelské rozhraní, jak je znázorněno na obrázku níže.
Nastavte následující vlastnosti. Vlastnosti, které nastavujeme:
| S / N | ovládání | Vlastnictví | Hodnota |
|---|---|---|---|
| 1 | CommandButton 1 | Jméno | btnDisplayFullName |
| 2 | Titulek | Podprogram pro celé jméno |
Vaše rozhraní by nyní mělo vypadat následovně.
Krok 2) Přidat podprogram
- Stisknutím Alt + F11 otevřete okno kódu
- Přidejte následující podprogram
Private Sub displayFullName(ByVal firstName As String, ByVal lastName As String) MsgBox firstName & " " & lastName End Sub
ZDE v kódu,
| Code | Akce |
|---|---|
|
|
|
|
|
|
Krok 3) Volání podprogramu
Volání podprogramu z události kliknutí příkazového tlačítka.
- Klikněte pravým tlačítkem myši na příkazové tlačítko, jak je znázorněno na obrázku níže. Vyberte Zobrazit Code.
- Otevře se editor kódu
Přidejte následující kód do editoru kódu pro událost click příkazového tlačítka btnDisplayFullName.
Private Sub btnDisplayFullName_Click() displayFullName "John", "Doe" End Sub
Okno kódu by nyní mělo vypadat následovně
Uložte změny a zavřete okno kódu.
Krok 4) Testování kódu
Na panelu nástrojů pro vývojáře nastavte režim návrhu na „vypnuto“. Jak je ukázáno níže.
Krok 5) Klikněte na příkazové tlačítko 'Podprogram FullName'.
Získáte následující výsledky
Tlačítko je pohodlné, ale není to jediný způsob, jak spustit podprogram, a během vývoje je zřídkakdy nejrychlejší.
Jak spustit podprogram bez tlačítka
I když stále píšete kód, přidání ovládacího prvku do listu jen za účelem otestování podprogramu ztrácí čas. VBA nabízí čtyři další způsoby, jak spustit podprogram, a každý z nich se hodí pro jiný okamžik vývojového cyklu.
- V editoru stiskněte F5: Umístěte kurzor kamkoli do Sub a stiskněte F5. Spustí se okamžitě. Toto funguje pouze tehdy, když Sub nepřijímá žádné argumenty, protože VBA nemá žádné hodnoty k dodání.
- Projděte si postup stisknutím klávesy F8: Stejné spuštění, jeden řádek po druhém, abyste mohli sledovat změnu každé proměnné v okně Lokální proměnné. Použijte to, když je výsledek nesprávný a potřebujete zjistit, kde.
- Použijte dialogové okno Makra: Na kartě Vývojář klikněte na Makra, vyberte název a klikněte na Spustit. V tomto seznamu se zobrazují pouze veřejné podprocesy bez argumentů, proto je pomocný podproces obvykle deklarován jako soukromý.
- Zavolejte to z jiného Subu: Toto je metoda používaná pro jakýkoli Sub, který přijímá argumenty, a ta, na kterou se spoléhá výše uvedené příkazové tlačítko.
Poslední možnost má dva akceptované tvary. Funguje zápis názvu následovaného holými argumenty, stejně jako explicitní klíčové slovo Call, ale pravidlo pro závorky se u nich liší.
Sub RunTheGreeting() ' Form 1: no Call keyword, no brackets displayFullName "John", "Doe" ' Form 2: Call keyword, brackets required Call displayFullName("Jane", "Roe") End Sub
Oba řádky dělají přesně totéž. Smíchání obou forem, tedy závorek bez klíčového slova Call, je nejčastější příčinou chyby kompilace „Očekávané: =“, když Sub přijímá více než jeden argument.
Rozdíl mezi podřazenou funkcí a funkcí ve VBA
Sub a Function jsou dva typy procedur ve VBA a začátečníci si často vyberou ten špatný. Rozhodující otázka je jednoduchá: potřebuje volající kód zpětnou hodnotu?
| vlastnost | V | funkce |
|---|---|---|
| Vrátí hodnotu | Ne | Ano, přiřazeno k názvu funkce |
| Deklarováno s | Sub … Konec Sub | Funkce … Konec funkce |
| Nazýváno jako | Prohlášení na vlastním řádku | Část výrazu, například x = myFunc(2) |
| Použitelné v buňce listu | Ne | Ano, jako uživatelem definovaná funkce |
| Typické použití | Formátování listu, vymazání vstupů, zobrazení zprávy | Výpočet součtu, převod hodnoty, vyhledávání dat |
Použijte Sub, když kód pracuje se sešitem, a Funkce VBA když kód vygeneruje odpověď, kterou něco jiného spotřebuje.







