Innehållsförteckning:
Video: Dränering - så utför du en korrekt dränering 2024
I VBA-programmering returnerar en funktion ett värde. Du kan utföra Funktionsprocedurer och ringa funktionen i Excel 2016. Funktioner, till skillnad från Sub-procedurer, kan utföras på två sätt:
-
Genom att ringa funktionen från en annan Sub-procedur eller Funktionsprocedur
-
Genom att använda funktionen i en kalkylblad formel
Prova den här enkla funktionen. Ange det i en VBA-modul:
Funktion CubeRoot (number) CubeRoot = number ^ (1/3) Slutfunktion
Denna funktion är ganska wimpy; det beräknar bara kubrototen av numret som skickas till det som dess argument. Det ger dock en utgångspunkt för att förstå funktioner. Det illustrerar också ett viktigt begrepp om funktioner: hur man returnerar värdet. (Du kommer ihåg att en funktion returnerar ett värde, eller hur?)
Observera att den enkla raden av kod som utgör denna funktionsprocedur utför en beräkning. Resultatet av matematiken (antal till effekten 1/3) tilldelas variabel CubeRoot. Inte tillfälligt är CubeRoot också namnet på funktionen. För att berätta för funktionen vilket värde som ska returneras, tilldelar du det värdet till namnet på funktionen.
Ringa funktionen från ett Sub-procedur
Eftersom du inte kan direkt utföra en funktion måste du ringa den från en annan procedur. Ange följande enkla procedur i samma VBA-modul som innehåller CubeRoot-funktionen:
Sub CallerSub () Ans = CubeRoot (125) MsgBox Ans End Sub
När du utför CallerSub-proceduren, visar Excel en meddelanderuta som innehåller värdet på ans-variabeln, som är 5.
Det här är vad som händer: CubeRoot-funktionen körs och den mottar ett argument på 125. Beräkningen utförs av funktionens kod (med värdet som passerat som argument) och funktionens återförda värde tilldelas Ans-variabeln. MsgBox-funktionen visar då värdet på ans-variabeln.
Försök ändra argumentet som skickats till CubeRoot-funktionen och kör CallerSub-makro igen. Det fungerar precis som det borde - förutsatt att du ger funktionen ett giltigt argument (ett positivt tal).
Förresten kan CallerSub-förfarandet förenklas lite. Ans-variabeln krävs verkligen inte om inte din kod kommer att använda den variabeln senare. Du kan använda det här enkla uttalandet för att få samma resultat:
MsgBox CubeRoot (125)
Ringa en funktion från en arbetsbladformel
Nu är det dags att ringa denna VBA-funktion från en arbetsbladformel.Aktivera ett arbetsblad i samma arbetsbok som innehåller definitionen av CubeRoot-funktionen. Ange sedan följande formel i vilken cell som helst:
= CubeRoot (1728)
Cellen visar 12, vilket är faktiskt kubotroten av 1, 728.
Som du kan förvänta dig kan du använda en cellreferens som argumentet för CubeRoot-funktionen. Om till exempel, om cell A1 innehåller ett värde, kan du ange = CubeRoot (A1) . I det här fallet returnerar funktionen det antal som erhållits genom att beräkna kubens rot i värdet i A1.
Du kan använda denna funktion varje antal gånger i kalkylbladet. Precis som Excel: s inbyggda funktioner visas dina anpassade funktioner i dialogrutan Infoga funktion. Klicka på knappen Infoga funktion verktygsfält och välj kategorin Användardefinierad. Dialogrutan Infoga funktion visar din egen funktion.
Funktionen CubeRoot visas i kategorin Användardefinierad i dialogrutan Infoga funktion.Om du vill att dialogrutan Infoga funktion ska visa en beskrivning av funktionen följer du dessa steg:
-
Välj Utvecklare → Kod → Makroner.
Excel visar dialogrutan Makro, men CubeRoot visas inte i listan. (CubeRoot är en funktionsprocedur, och den här listan visar endast subprocedurer.) Fröken inte.
-
Skriv ordet CubeRoot i rutan Makronamn.
-
Klicka på alternativknappen.
-
Ange en beskrivning av funktionen i rutan Beskrivning.
-
Klicka på OK för att stänga dialogrutan Makroalternativ.
-
Stäng dialogrutan Makro genom att klicka på Avbryt-knappen.
Denna beskrivande text visas nu i dialogrutan Infoga funktion.
Kolla in CubeRoot-funktionen som används i kalkylbladsformulär.
Använda CubeRoot-funktionen i formler.