VBA - Returner en verdi fra en delprosedyre

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

Du vil bidra til utvikling av området, dele siden med vennene dine

wave wave wave wave wave