Excel VBA Subroutine: Hur man ringer Sub i VBA med exempel
โก Smart sammanfattning
Excel VBA-subrutin grupperar ett kodblock som utfรถr en uppgift utan att returnera ett vรคrde. Den hรคr sidan behandlar namngivningsregler, subsyntax, anrop av en sub frรฅn en kommandoknapp och hur en sub skiljer sig frรฅn en funktion.

Vad รคr en subrutin i VBA?
A Subrutin i VBA รคr en kodbit som utfรถr en specifik uppgift som beskrivs i koden men som inte returnerar ett resultat eller ett vรคrde. Subrutiner anvรคnds fรถr att bryta ner stora bitar av kod i smรฅ hanterbara delar. Subrutiner kan รฅterkallas flera gรฅnger frรฅn var som helst i programmet.
Lรฅt oss sรคga att du har skapat ett anvรคndargrรคnssnitt med textrutor fรถr att acceptera anvรคndarindata. Du kan skapa en subrutin som rensar innehรฅllet i textrutorna. En subrutin fรถr VBA-samtal รคr lรคmplig i ett sรฅdant scenario eftersom du inte vill returnera nรฅgra resultat.
Varfรถr anvรคnda subrutiner
- Bryt upp kod i liten hanterbar kod: Ett genomsnittligt datorprogram har tusentals och รฅter tusentals kรคllkodsrader. Detta introducerar komplexitet. Subrutiner hjรคlper till att lรถsa detta problem genom att dela upp programmet i smรฅ hanterbara bitar av kod.
- Code รฅteranvรคndbarhet. Lรฅt oss sรคga att du har ett program som behรถver komma รฅt databasen, nรคstan alla fรถnster i programmet kommer att behรถva interagera med databasen. Istรคllet fรถr att skriva separat kod fรถr dessa fรถnster kan du skapa en funktion som hanterar alla databasinteraktioner. Du kan sedan anropa det frรฅn vilket fรถnster du vill.
- Subrutiner och funktioner รคr sjรคlvdokumenterande. Lรฅt oss sรคga att du har en funktion calculateLoanInterest och en annan som sรคger connectToDatabase. Genom att bara titta pรฅ namnet pรฅ subrutinen/funktionen kommer programmeraren att kunna berรคtta vad programmet gรถr.
Innan kompilatorn skriver en fรถrvรคntar sig namnet att fรถlja en kort uppsรคttning regler.
Regler fรถr namngivning av subrutiner och funktioner
Fรถr att anvรคnda subrutiner och funktioner finns det regler som man mรฅste fรถlja.
- Namnet pรฅ en subrutin eller VBA-anropsfunktion kan inte innehรฅlla mellanslag
- Ett Excel VBA Call Sub- eller funktionsnamn ska bรถrja med en bokstav eller ett understreck. Det kan inte bรถrja med ett nummer eller ett specialtecken
- En subrutin eller funktionsnamn kan inte vara ett nyckelord. Ett nyckelord รคr ett ord som har speciell betydelse i VBA. Ord som Privat, Sub, Funktion och Slut, etc. รคr alla exempel pรฅ nyckelord. Kompilatorn anvรคnder dem fรถr specifika uppgifter.
Med ett giltigt namn valt fรถljer sjรคlva deklarationen ett fast mรถnster.
VBA-subrutinsyntax
Du mรฅste aktivera fliken Utvecklare i Excel fรถr att fรถlja detta exempel. Om du inte vet hur du aktiverar fliken Utvecklare lรคs sedan handledningen pรฅ VBA-kontroller i Excel
HรR i syntaxen,
Private Sub mySubRoutine(ByVal arg1 As String, ByVal arg2 As String) 'do something End Sub
Syntaxfรถrklaring
| Code | Handling |
|---|---|
|
|
|
|
|
|
Fรถljande subrutin accepterar fรถr- och efternamnet och visar dem i en meddelanderuta.
Nu ska vi programmera och kรถra denna underprocedur. Lรฅt se det hรคr.
Hur man ringer Sub i VBA
Nedan fรถljer en steg-fรถr-steg-process om hur man ringer sub i VBA:
- Designa anvรคndargrรคnssnittet och stรคll in egenskaperna fรถr anvรคndarkontrollerna.
- Lรคgg till subrutinen
- Skriv klickhรคndelsekoden fรถr kommandoknappen som anropar subrutinen
- Testa applikationen
Steg 1) Anvรคndargrรคnssnitt
Designa anvรคndargrรคnssnittet enligt bilden nedan.
Stรคll in fรถljande egenskaper. Egenskaperna som vi stรคller in:
| S / N | kontroll | Fast egendom | Vรคrderar |
|---|---|---|---|
| 1 | Kommandoknapp1 | Namn | btnDisplayFullnamn |
| 2 | Bildtext | Subrutin fรถr fullstรคndigt namn |
Ditt grรคnssnitt bรถr nu se ut som fรถljer.
Steg 2) Lรคgg till subrutin
- Tryck pรฅ Alt + F11 fรถr att รถppna kodfรถnstret
- Lรคgg till fรถljande subrutin
Private Sub displayFullName(ByVal firstName As String, ByVal lastName As String) MsgBox firstName & " " & lastName End Sub
HรR i koden,
| Code | Actions |
|---|---|
|
|
|
|
|
|
Steg 3) Ringer subrutinen
Anropar subrutinen frรฅn kommandoknappens klickhรคndelse.
- Hรถgerklicka pรฅ kommandoknappen som visas pรฅ bilden nedan. Vรคlj Visa Code.
- Kodeditorn รถppnas
Lรคgg till fรถljande kod i kodredigeraren fรถr klickhรคndelsen fรถr kommandoknappen btnDisplayFullName.
Private Sub btnDisplayFullName_Click() displayFullName "John", "Doe" End Sub
Ditt kodfรถnster ska nu se ut som fรถljer
Spara รคndringarna och stรคng kodfรถnstret.
Steg 4) Testar koden
Stรคng av designlรคget i verktygsfรคltet fรถr utvecklare. Enligt nedanstรฅende.
Steg 5) Klicka pรฅ kommandoknappen 'FullName Subroutine'.
Du kommer att fรฅ fรถljande resultat
En knapp รคr praktiskt, men det รคr inte det enda sรคttet att starta en subrutin, och under utveckling รคr det sรคllan det snabbaste.
Hur man kรถr en subrutin utan en knapp
Medan du fortfarande skriver kod slรถsar du tid genom att lรคgga till en kontroll i arket bara fรถr att testa en subrutin. VBA erbjuder fyra andra sรคtt att kรถra en, och vart och ett passar en annan tidpunkt i utvecklingscykeln.
- Tryck F5 i redigeraren: Placera markรถren var som helst i Sub-fรคltet och tryck pรฅ F5. Det kรถrs omedelbart. Detta fungerar bara nรคr Sub-fรคltet inte tar emot nรฅgra argument, eftersom VBA inte har nรฅgra vรคrden att ange.
- Stega igenom med F8: Samma kรถrning, en rad i taget, sรฅ att du kan se varje variabel รคndras i Locals-fรถnstret. Anvรคnd den nรคr ett resultat รคr fel och du behรถver se var.
- Anvรคnd dialogrutan Makron: Pรฅ fliken Utvecklare klickar du pรฅ Makron, vรคljer namnet och klickar pรฅ Kรถr. Endast offentliga sub utan argument visas i den hรคr listan, vilket รคr anledningen till att en hjรคlpsub vanligtvis deklareras som privat.
- Anropa det frรฅn en annan Sub: Detta รคr metoden som anvรคnds fรถr alla Sub-kommandon som tar argument, och den som kommandoknappen ovan fรถrlitar sig pรฅ.
Det sista alternativet har tvรฅ accepterade former. Att skriva namnet fรถljt av bara argument fungerar, och detsamma gรคller fรถr det explicita nyckelordet Call, men hakparentesregeln skiljer sig mellan dem.
Sub RunTheGreeting() ' Form 1: no Call keyword, no brackets displayFullName "John", "Doe" ' Form 2: Call keyword, brackets required Call displayFullName("Jane", "Roe") End Sub
Bรฅda raderna gรถr exakt samma sak. Att blanda de tvรฅ formerna, genom att skriva parenteser utan nyckelordet Call, รคr den enskilt vanligaste orsaken till kompileringsfelet "Expected: =" nรคr en Sub tar mer รคn ett argument.
Skillnaden mellan en subfunktion och en funktion i VBA
Sub och Function รคr de tvรฅ procedurtyperna i VBA, och nybรถrjare vรคljer ofta fel. Den avgรถrande frรฅgan รคr enkel: behรถver den anropande koden ett vรคrde tillbaka?
| Leverans | Sub | Funktion |
|---|---|---|
| Returnerar ett vรคrde | Nej | Ja, tilldelad funktionsnamnet |
| Deklarerad med | Sub โฆ End Sub | Funktion โฆ Slutfunktion |
| Kallas som | Ett uttalande pรฅ en egen rad | Del av ett uttryck, till exempel x = myFunc(2) |
| Kan anvรคndas i en cell i kalkylbladet | Nej | Ja, som en anvรคndardefinierad funktion |
| Typisk anvรคndning | Formatera ett ark, rensa inmatningar, visa ett meddelande | Berรคkna en totalsumma, konvertera ett vรคrde, slรฅ upp data |
Anvรคnd en Sub nรคr koden pรฅverkar arbetsboken, och en VBA-funktion nรคr koden producerar ett svar som nรฅgot annat konsumerar.






