Denna handledning lär dig hur du returnerar ett värde från en delprocedur i VBA.
En delprocedur är inte utformad för att returnera ett värde - det är vad ett funktionsförfarande används för. Det kan dock finnas en tid då du kör någon kod i en delprocedur där du behöver hämta ett värde från den underproceduren. Sättet att göra detta är att använda modul eller globala variabler eller att använda en delprocedur för att fylla i ett Excel -ark.
Använda variabler för att returnera ett värde
Du kan deklarera variabler på modulnivå. När du gör det kan dessa variabler användas var som helst inom modulen och variablerna behåller sina värden. För att deklarera en variabel på modulnivå, deklarera helt enkelt variabeln högst upp i din kodmodul:
123456789 | Alternativ ExplicitDim dblQty som DoubleSubtestA ()'ring TestB -subRing TestB'visa variabelvärdet i modulfönstretDebug.Print dblQtyAvsluta Sub |
1234 | Subtest B ()'fyll i modulvariabelndblQty = 900Avsluta Sub |
För att sätta ihop dessa skulle vi köra TestA, som i sin tur skulle ringa TestB och ge oss värdet 900 i det omedelbara fönstret.
Detta fungerar bara inom modulen, eftersom variabeln har deklarerats med Dim -satsen på modulnivå.
Global variabel
Du kan deklarera variabeln på global nivå för att använda den i dina projektmoduler.
Använda ett underförfarande för att fylla i ett Excel -ark
Delproceduren nedan fyller direkt intervall A1 till C1 i ditt Excel -blad och returnerar därmed värden till cellerna från delproceduren.
12345 | Sub PopulateRange ()Range ("A1") = "Produkt"Område ("B1") = "Kvantitet"Område ("C1") = "Kostnad"Avsluta Sub |
Du kan sedan referera till dessa värden i en annan procedur genom att referera till cellvärdena:
1234567 | Sub RetrieveRange ()Dim Produkt som sträng, kvantitet så lång, kostnad som dubbeltProdukt = intervall ("A1")Quant = Range ("B1")Kostnad = intervall ("C1")Avsluta Sub |