Excel VBA-subroutine: Sub aanroepen in VBA met voorbeeld
⚡ Slimme samenvatting
Een Excel VBA-subroutine is een codeblok dat een taak uitvoert zonder een waarde terug te geven. Deze pagina behandelt naamgevingsregels, de syntaxis van subroutines, het aanroepen van een subroutine vanuit een opdrachtknop en het verschil tussen een subroutine en een functie.

Wat is een subroutine in VBA?
A Subroutine in VBA is een stukje code dat een specifieke taak uitvoert die in de code wordt beschreven, maar geen resultaat of waarde retourneert. Subroutines worden gebruikt om grote stukken code op te splitsen in kleine, hanteerbare delen. Subroutines kunnen overal in het programma meerdere keren worden opgeroepen.
Stel dat u een gebruikersinterface hebt gemaakt met tekstvakken voor het accepteren van invoergegevens van de gebruiker. U kunt een subroutine maken die de inhoud van de tekstvakken wist. Een VBA Call Subroutine is in zo'n scenario geschikt omdat u geen resultaten wilt retourneren.
Waarom subroutines gebruiken?
- Breek code op in kleine, beheersbare code: Een gemiddeld computerprogramma heeft duizenden en duizenden broncoderegels. Dit introduceert complexiteit. Subroutines helpen dit probleem op te lossen door het programma op te splitsen in kleine beheersbare stukken code.
- Code herbruikbaarheid. Stel dat u een programma hebt dat toegang nodig heeft tot de database, dan moeten bijna alle vensters in het programma met de database communiceren. In plaats van aparte code te schrijven voor deze vensters, kunt u een functie maken die alle database-interacties afhandelt. U kunt deze functie vervolgens vanuit elk gewenst venster aanroepen.
- Subroutines en functies zijn zelfdocumenterend. Stel dat u een functie 'calculLoanInterest' heeft en een andere functie 'connectToDatabase'. Door alleen maar naar de naam van de subroutine/functie te kijken, kan de programmeur zien wat het programma doet.
Voordat een naam wordt geschreven, verwacht de compiler dat deze aan een korte reeks regels voldoet.
Regels voor het benoemen van subroutines en functies
Om subroutines en functies te gebruiken, zijn er een aantal regels die men moet volgen.
- Een subroutine of VBA-aanroepfunctienaam mag geen spatie bevatten
- Een Excel VBA Call Sub- of functienaam moet beginnen met een letter of een onderstrepingsteken. Het mag niet beginnen met een cijfer of een speciaal teken
- Een subroutine- of functienaam kan geen trefwoord zijn. Een trefwoord is een woord dat een speciale betekenis heeft VBA. Woorden als Private, Sub, Function en End, enz. zijn allemaal voorbeelden van trefwoorden. De compiler gebruikt ze voor specifieke taken.
Als er een geldige naam is gekozen, volgt de declaratie zelf een vast patroon.
VBA-subroutinesyntaxis
U moet het tabblad Ontwikkelaars in Excel inschakelen om dit voorbeeld te kunnen volgen. Als u niet weet hoe u het tabblad Ontwikkelaars moet inschakelen, lees dan de tutorial op VBA-besturingselementen in Excel
HIER in de syntaxis,
Private Sub mySubRoutine(ByVal arg1 As String, ByVal arg2 As String) 'do something End Sub
Syntaxis uitleg
| Code | Actie |
|---|---|
|
|
|
|
|
|
De volgende subroutine accepteert de voor- en achternaam en geeft deze weer in een berichtvenster.
Nu gaan we deze subprocedure programmeren en uitvoeren. Laat dit eens zien.
Sub bellen in VBA
Hieronder vindt u een stapsgewijs proces voor het aanroepen van Sub in VBA:
- Ontwerp de gebruikersinterface en stel de eigenschappen in voor de gebruikersbedieningen.
- Voeg de subroutine toe
- Schrijf de klikgebeurteniscode voor de opdrachtknop die de subroutine aanroept
- Test de applicatie
Stap 1) User Interface
Ontwerp de gebruikersinterface zoals weergegeven in de onderstaande afbeelding.
Stel de volgende eigenschappen in. De eigenschappen die we instellen:
| S / N | Controleer: | Eigendom | Waarde |
|---|---|---|---|
| 1 | CommandoKnop1 | Naam | btnDisplayFullName |
| 2 | Onderschrift | Volledige naam subroutine |
Uw interface zou er nu als volgt uit moeten zien.
Stap 2) Subroutine toevoegen
- Druk op Alt + F11 om het codevenster te openen
- Voeg de volgende subroutine toe
Private Sub displayFullName(ByVal firstName As String, ByVal lastName As String) MsgBox firstName & " " & lastName End Sub
HIER in de code,
| Code | Acties |
|---|---|
|
|
|
|
|
|
Stap 3) De subroutine oproepen
De subroutine aanroepen via de klikgebeurtenis van de opdrachtknop.
- Klik met de rechtermuisknop op de opdrachtknop, zoals weergegeven in de onderstaande afbeelding. Selecteer 'Weergave'. Code.
- De code-editor wordt geopend
Voeg de volgende code toe aan de code-editor voor de klikgebeurtenis van de opdrachtknop btnDisplayFullName.
Private Sub btnDisplayFullName_Click() displayFullName "John", "Doe" End Sub
Uw codevenster zou er nu als volgt uit moeten zien
Sla de wijzigingen op en sluit het codevenster.
Stap 4) Het testen van de code
Zet op de ontwikkelaarswerkbalk de ontwerpmodus op 'uit'. Zoals hieronder weergegeven.
Stap 5) Klik op de opdrachtknop 'FullName Subroutine'.
U krijgt de volgende resultaten
Een knop is handig, maar het is niet de enige manier om een subroutine te starten, en tijdens de ontwikkeling is het zelden de snelste.
Hoe voer je een subroutine uit zonder een knop te gebruiken?
Terwijl je nog bezig bent met het schrijven van code, is het toevoegen van een besturingselement aan het werkblad om een subroutine te testen tijdverspilling. VBA biedt vier andere manieren om een subroutine uit te voeren, en elk is geschikt voor een ander moment in de ontwikkelingscyclus.
- Druk op F5 in de editor: Plaats de cursor ergens in de Sub en druk op F5. De Sub wordt direct uitgevoerd. Dit werkt alleen als de Sub geen argumenten accepteert, omdat VBA geen waarden hoeft door te geven.
- Doorloop de stappen met F8: Dezelfde code wordt regel voor regel uitgevoerd, zodat je in het venster 'Lokale waarden' elke variabele kunt zien veranderen. Gebruik dit wanneer een resultaat onjuist is en je wilt weten waar dat precies zit.
- Gebruik het dialoogvenster Macro's: Klik op het tabblad Ontwikkelaar op Macro's, kies de naam en klik op Uitvoeren. Alleen openbare subroutines zonder argumenten worden in deze lijst weergegeven, daarom wordt een hulpsubroutine meestal als privé gedeclareerd.
- Roep het aan vanuit een andere sub: Dit is de methode die wordt gebruikt voor elke Sub die argumenten accepteert, en waarop de bovenstaande opdrachtknop is gebaseerd.
De laatste optie kent twee geaccepteerde vormen. Het schrijven van de naam gevolgd door de kale argumenten werkt, evenals het expliciete gebruik van het trefwoord Call, maar de regel voor de haakjes verschilt tussen beide.
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 regels doen precies hetzelfde. Het combineren van de twee vormen, door haakjes te gebruiken zonder het trefwoord `Call`, is de meest voorkomende oorzaak van de compileerfout "Expected: =" wanneer een `Sub` meer dan één argument accepteert.
Verschil tussen een subroutine en een functie in VBA
Sub en Function zijn de twee proceduretypen in VBA, en beginners kiezen vaak de verkeerde. De doorslaggevende vraag is eenvoudig: heeft de aanroepende code een waarde nodig als retourwaarde?
| Kenmerk | Sub | Functie |
|---|---|---|
| Retourneert een waarde | Nee | Ja, toegewezen aan de functienaam |
| Verklaard met | Sub ... Einde Sub | Functie … Einde functie |
| genoemd als | Een statement op zich. | Een deel van een expressie, bijvoorbeeld x = myFunc(2) |
| Bruikbaar in een werkbladcel | Nee | Ja, als een door de gebruiker gedefinieerde functie. |
| Typisch gebruik | Een werkblad opmaken, invoer wissen, een bericht weergeven | Een totaal berekenen, een waarde omrekenen, gegevens opzoeken |
Gebruik een Sub wanneer de code op het werkblad wordt uitgevoerd, en een VBA-functie wanneer de code een antwoord produceert dat door iets anders wordt gebruikt.






