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í.

  • ???? Definice: Podprogram provede specifický úkol a nevrací žádnou hodnotu kódu, který jej volal.
  • ♻️ Opětovná použitelnost: Jeden podprogram lze volat mnohokrát z libovolného místa v projektu.
  • 🔤 Pravidla pojmenování: Název neobsahuje mezery, začíná písmenem nebo podtržítkem a nikdy není klíčovým slovem VBA.
  • 🧾 Syntaxe: Soukromý podproces name(ByVal arg As String) blok otevírá a End Sub jej zavírá.
  • 🖱️ Povolání: Událost kliknutí na příkazové tlačítko volá podprogram a předá jeho argumenty.
  • ▶ </ s> Spuštění přímo: F5, dialogové okno Makra nebo klíčové slovo Volání spustí podprogram bez tlačítka.
  • 🔁 Podřízená funkce nebo funkce: Pokud je nutné vrátit hodnotu, vyberte funkci, jinak zvolte podtřídu.

Podprogram Excel VBA

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
  • „Private Sub mySubRoutine(…)“
  • Zde se klíčové slovo „Sub“ používá k deklaraci podprogramu s názvem „mySubRoutine“ a ke spuštění těla podprogramu.
  • Klíčové slovo Private se používá k určení rozsahu podprogramu
  • „ByVal arg1 jako řetězec, ByVal arg2 jako řetězec“ :
  • Deklaruje dva parametry řetězcového datového typu název arg1 a arg2
  • "End Sub"
  • „End Sub“ se používá k ukončení těla podprogramu

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:

  1. Navrhněte uživatelské rozhraní a nastavte vlastnosti pro uživatelské ovládací prvky.
  2. Přidejte podprogram
  3. Napište kód události kliknutí pro příkazové tlačítko, které volá podprogram
  4. Otestujte aplikaci

Krok 1) Uživatelské rozhraní

Navrhněte uživatelské rozhraní, jak je znázorněno na obrázku níže.

Jak volat Sub ve VBA

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ě.

Jak volat Sub ve VBA

Krok 2) Přidat podprogram

  1. Stisknutím Alt + F11 otevřete okno kódu
  2. 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
  • “Private Sub displayFullName(…)”
  • Deklaruje soukromý podprogram displayFullName, který přijímá dva řetězcové parametry.
  • „ByVal křestní jméno jako řetězec, ByVal příjmení jako řetězec“
  • Deklaruje dvě proměnné parametrů firstName a lastName
  • MsgBox jméno Příjmení"
  • Volá MsgBox vestavěná funkce pro zobrazení zprávy. Poté předá proměnné 'jméno' a 'příjmení' jako parametry.
  • Ampersand „&“ se používá ke spojení dvou proměnných a přidání prázdného místa mezi ně.

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

Jak volat Sub ve VBA

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ě

Jak volat Sub ve VBA

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.

Jak volat Sub ve VBA

Krok 5) Klikněte na příkazové tlačítko 'Podprogram FullName'.

Získáte následující výsledky

Jak volat Sub ve VBA

Stáhněte si výše uvedený Excel Code

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.

Nejčastější dotazy

Soukromý podprojekt lze volat pouze z modulu, který jej deklaruje. Veřejný podprojekt je viditelný pro každý modul v projektu a je jediným typem, který se zobrazuje v dialogovém okně Makra.

ByVal předává kopii, takže podprogram nemůže změnit proměnnou volajícího. ByRef předává samotnou proměnnou, takže jakákoli změna je pro volajícího viditelná. ByRef je výchozí, pokud není zapsáno žádné klíčové slovo.

Použijte příkaz Exit Sub. V tomto bodě zastaví proceduru a vrátí řízení tomu, kdo ji volal, což je užitečné pro předčasné ukončení, když validační test selže.

Ano. Vložte makro a asistent s umělou inteligencí seskupí související řádky, navrhne popisný název pro každý nový dílčí prvek a přepíše originál jako krátkou sekvenci volání. Výsledek otestujte na kopii sešitu.

Ano. Zadejte text chyby a volající řádek a asistent s umělou inteligencí identifikuje příčiny, jako jsou například závorky použité bez klíčového slova Call, nesprávný počet argumentů nebo neshodný datový typ, a poté dodá opravený řádek.

Shrňte tento příspěvek takto: