Excel VBA-Unterroutine: So rufen Sie Sub in VBA anhand eines Beispiels auf
โก Intelligente Zusammenfassung
Eine Excel-VBA-Subroutine ist ein Codeblock, der eine Aufgabe ausfรผhrt, ohne einen Wert zurรผckzugeben. Diese Seite behandelt Namensregeln, die Sub-Syntax, den Aufruf einer Subroutine รผber eine Befehlsschaltflรคche und die Unterschiede zwischen einer Subroutine und einer Funktion.

Was ist eine Unterroutine in VBA?
A Unterprogramm in VBA ist ein Codeteil, der eine bestimmte, im Code beschriebene Aufgabe ausfรผhrt, aber kein Ergebnis oder Wert zurรผckgibt. Unterprogramme werden verwendet, um groรe Codeteile in kleine, รผberschaubare Teile zu zerlegen. Unterprogramme kรถnnen von รผberall im Programm mehrmals aufgerufen werden.
Angenommen, Sie haben eine Benutzeroberflรคche mit Textfeldern zum Akzeptieren von Benutzereingabedaten erstellt. Sie kรถnnen eine Subroutine erstellen, die den Inhalt der Textfelder lรถscht. Eine VBA-Aufrufsubroutine ist in einem solchen Szenario geeignet, da Sie keine Ergebnisse zurรผckgeben mรถchten.
Warum Unterprogramme verwenden?
- Teilen Sie den Code in kleinen, รผberschaubaren Code auf: Ein durchschnittliches Computerprogramm hat Tausende und Abertausende von Quellcodezeilen. Dies fรผhrt zu Komplexitรคt. Unterprogramme helfen, dieses Problem zu lรถsen, indem sie das Programm in kleine, รผberschaubare Codeblรถcke aufteilen.
- Code Wiederverwendbarkeit. Angenommen, Sie haben ein Programm, das auf die Datenbank zugreifen muss. Fast alle Fenster im Programm mรผssen mit der Datenbank interagieren. Anstatt separaten Code fรผr diese Fenster zu schreiben, kรถnnen Sie eine Funktion erstellen, die alle Datenbankinteraktionen verarbeitet. Sie kรถnnen diese dann von jedem beliebigen Fenster aus aufrufen.
- Unterprogramme und Funktionen sind selbstdokumentierend. Nehmen wir an, Sie haben eine Funktion berechneLoanInterest und eine andere mit der Aufschrift connectToDatabase. Anhand des Namens der Unterroutine/Funktion kann der Programmierer erkennen, was das Programm tut.
Bevor ein Name geschrieben wird, erwartet der Compiler, dass dieser einigen wenigen Regeln entspricht.
Regeln fรผr die Benennung von Unterprogrammen und Funktionen
Um Unterprogramme und Funktionen verwenden zu kรถnnen, mรผssen bestimmte Regeln befolgt werden.
- Der Name einer Unterroutine oder einer VBA-Aufruffunktion darf kein Leerzeichen enthalten
- Ein Excel VBA Call Sub oder Funktionsname sollte mit einem Buchstaben oder einem Unterstrich beginnen. Es darf nicht mit einer Zahl oder einem Sonderzeichen beginnen
- Ein Unterprogramm- oder Funktionsname darf kein Schlรผsselwort sein. Ein Schlรผsselwort ist ein Wort, das eine besondere Bedeutung hat VBA. Wรถrter wie โPrivateโ, โSubโ, โFunctionโ und โEndโ usw. sind Beispiele fรผr Schlรผsselwรถrter. Der Compiler verwendet sie fรผr bestimmte Aufgaben.
Bei Wahl eines gรผltigen Namens folgt die Deklaration selbst einem festen Muster.
Syntax der VBA-Unterroutine
Sie mรผssen die Registerkarte โEntwicklerโ in Excel aktivieren, um diesem Beispiel folgen zu kรถnnen. Wenn Sie nicht wissen, wie Sie die Registerkarte โEntwicklerโ aktivieren, lesen Sie das Tutorial weiter VBA-Steuerelemente in Excel
HIER in der Syntax,
Private Sub mySubRoutine(ByVal arg1 As String, ByVal arg2 As String) 'do something End Sub
Syntaxerklรคrung
| Code | Action |
|---|---|
|
|
|
|
|
|
Die folgende Subroutine akzeptiert den Vor- und Nachnamen und zeigt diese in einem Meldungsfeld an.
Jetzt werden wir diese Unterprozedur programmieren und ausfรผhren. Sehen wir uns das an.
So rufen Sie Sub in VBA auf
Nachfolgend finden Sie eine Schritt-fรผr-Schritt-Anleitung zum Aufrufen von Sub in VBA:
- Entwerfen Sie die Benutzeroberflรคche und legen Sie die Eigenschaften fรผr die Benutzersteuerelemente fest.
- Fรผgen Sie die Unterroutine hinzu
- Schreiben Sie den Klickereigniscode fรผr die Befehlsschaltflรคche, die die Unterroutine aufruft
- Testen Sie die Anwendung
Schritt 1) Benutzerschnittstelle
Gestalten Sie die Benutzeroberflรคche wie im Bild unten gezeigt.
Legen Sie die folgenden Eigenschaften fest. Die Eigenschaften, die wir festlegen:
| S / N | Kontrolle | Eigenschaft | Wert |
|---|---|---|---|
| 1 | Befehlsschaltflรคche1 | Name | btnDisplayFullName |
| 2 | Bildunterschrift | Unterprogramm mit vollstรคndigem Namen |
Ihre Oberflรคche sollte nun wie folgt aussehen.
Schritt 2) Unterprogramm hinzufรผgen
- Drรผcken Sie Alt + F11, um das Codefenster zu รถffnen
- Fรผgen Sie die folgende Subroutine hinzu
Private Sub displayFullName(ByVal firstName As String, ByVal lastName As String) MsgBox firstName & " " & lastName End Sub
HIER im Code,
| Code | Aktion |
|---|---|
|
|
|
|
|
|
Schritt 3) Aufruf des Unterprogramms
Aufrufen der Unterroutine รผber das Klickereignis der Befehlsschaltflรคche.
- Klicken Sie mit der rechten Maustaste auf die Befehlsschaltflรคche (siehe Abbildung unten). Wรคhlen Sie โAnsichtโ. Code.
- Der Code-Editor wird geรถffnet
Fรผgen Sie im Code-Editor den folgenden Code fรผr das Klickereignis der Befehlsschaltflรคche โbtnDisplayFullNameโ hinzu.
Private Sub btnDisplayFullName_Click() displayFullName "John", "Doe" End Sub
Ihr Codefenster sollte nun wie folgt aussehen
Speichern Sie die รnderungen und schlieรen Sie das Codefenster.
Schritt 4) Testen des Codes
Deaktivieren Sie in der Entwicklersymbolleiste den Designmodus. Wie nachfolgend dargestellt.
Schritt 5) Klicken Sie auf die Befehlsschaltflรคche โFullName Subroutineโ.
Sie erhalten folgende Ergebnisse
Ein Knopf ist zwar praktisch, aber nicht die einzige Mรถglichkeit, eine Subroutine zu starten, und wรคhrend der Entwicklung ist er selten die schnellste.
Wie man eine Unterroutine ohne Knopf ausfรผhrt
Wรคhrend Sie noch Code schreiben, ist das Hinzufรผgen eines Steuerelements zum Tabellenblatt nur zum Testen einer Subroutine Zeitverschwendung. VBA bietet vier weitere Mรถglichkeiten, eine Subroutine auszufรผhren, und jede eignet sich fรผr einen anderen Zeitpunkt im Entwicklungszyklus.
- Drรผcken Sie F5 im Editor: Setzen Sie den Cursor an eine beliebige Stelle innerhalb der Subroutine und drรผcken Sie F5. Die Routine wird sofort ausgefรผhrt. Dies funktioniert nur, wenn die Subroutine keine Argumente benรถtigt, da VBA in diesem Fall keine Werte รผbergeben kann.
- Mit F8 durchgehen: Fรผhren Sie den gleichen Durchlauf zeilenweise durch, sodass Sie die รnderungen jeder Variablen im Fenster โLokale Variablenโ beobachten kรถnnen. Verwenden Sie diese Funktion, wenn ein Ergebnis fehlerhaft ist und Sie die Fehlerursache ermitteln mรผssen.
- Verwenden Sie den Dialog โMakrosโ: Klicken Sie auf der Registerkarte โEntwicklertoolsโ auf โMakrosโ, wรคhlen Sie den Namen aus und klicken Sie auf โAusfรผhrenโ. In dieser Liste werden nur รถffentliche Prozeduren ohne Argumente angezeigt. Daher wird eine Hilfsprozedur รผblicherweise als privat deklariert.
- Ruf es aus einem anderen Subreddit an: Dies ist die Methode, die fรผr jede Subroutine verwendet wird, die Argumente entgegennimmt, und auf die sich auch die obige Schaltflรคche stรผtzt.
Die letzte Option hat zwei zulรคssige Formen. Die Angabe des Namens gefolgt von den Argumenten ohne Argumente funktioniert, ebenso wie das explizite Schlรผsselwort โCallโ, jedoch unterscheidet sich die Klammerregel zwischen den beiden Varianten.
Sub RunTheGreeting() ' Form 1: no Call keyword, no brackets displayFullName "John", "Doe" ' Form 2: Call keyword, brackets required Call displayFullName("Jane", "Roe") End Sub
Beide Zeilen bewirken exakt dasselbe. Die hรคufigste Ursache fรผr den Kompilierfehler โExpected: =โ, wenn eine Sub mehr als ein Argument erwartet, ist die Vermischung der beiden Formen durch das Schreiben von Klammern ohne das Schlรผsselwort Call.
Unterschied zwischen einer Subroutine und einer Funktion in VBA
Sub und Function sind die beiden Prozedurtypen in VBA, und Anfรคnger wรคhlen oft den falschen. Die entscheidende Frage ist einfach: Benรถtigt der aufrufende Code einen Rรผckgabewert?
| Funktion | Sub | Funktion |
|---|---|---|
| Gibt einen Wert zurรผck | Nein | Ja, dem Funktionsnamen zugewiesen. |
| Erklรคrt mit | Sub โฆ Ende Sub | Funktion โฆ Ende der Funktion |
| Genannt als | Eine Aussage in eigener Sache | Teil eines Ausdrucks, zum Beispiel x = myFunc(2) |
| In einer Tabellenzelle verwendbar | Nein | Ja, als benutzerdefinierte Funktion |
| Typische Verwendung | Formatieren Sie ein Tabellenblatt, lรถschen Sie Eingabefelder, zeigen Sie eine Meldung an | Berechnen Sie eine Summe, wandeln Sie einen Wert um, suchen Sie Daten nach |
Verwenden Sie eine Subroutine, wenn der Code auf die Arbeitsmappe angewendet wird, und eine VBA-Funktion wenn der Code eine Antwort erzeugt, die von etwas anderem verarbeitet wird.






