Denne opplæringen vil lære deg hvordan du returnerer en verdi fra en delprosedyre i VBA.
En delprosedyre er ikke designet for å returnere en verdi - det er det en funksjonsprosedyre brukes til. Imidlertid kan det være et tidspunkt hvor du kjører noen kode i en delprosedyre der du må hente en verdi fra den delprosedyren. Måten å gjøre dette på er å bruke modul eller globale variabler eller å bruke en delprosedyre for å fylle ut et Excel -ark.
Bruke variabler for å returnere en verdi
Du kan deklarere variabler på modulnivå. Når du gjør det, kan disse variablene brukes hvor som helst i modulen, og variablene beholder sine verdier. For å deklarere en variabel på modulnivå, erklærer du ganske enkelt variabelen øverst i kodemodulen:
123456789 | Alternativ EksplisittDim dblQty som DoubleSub TestA ()'ring TestB -subenRing TestB'vis variabelverdien i modulvinduetDebug.Print dblQtySlutt Sub |
1234 | Sub TestB ()'fyll ut modulvariabelendblQty = 900Slutt Sub |
For å sette disse sammen ville vi kjøre TestA, som igjen ville ringe TestB og gi oss verdien på 900 i det umiddelbare vinduet.
Dette vil bare fungere i modulen, ettersom variabelen er deklarert ved bruk av Dim -setningen på modulnivå.
Global variabel
Du kan deklarere variabelen på globalt nivå for å bruke den gjennom prosjektmodulene dine.
Bruke en delprosedyre for å fylle ut et Excel -ark
Delprosedyren nedenfor vil fylle ut område A1 til C1 direkte i Excel -arket, og dermed returnere verdier til cellene fra delprosedyren.
12345 | Sub PopulateRange ()Range ("A1") = "Produkt"Område ("B1") = "Antall"Område ("C1") = "Kostnad"Slutt Sub |
Du kan deretter referere til disse verdiene i en annen prosedyre ved å referere til celleverdiene:
1234567 | Sub RetrieveRange ()Dim produkt som streng, antall så lenge, pris som dobbeltProdukt = utvalg ("A1")Quant = Range ("B1")Kostnad = område ("C1")Slutt Sub |