Indholdsfortegnelse:
Video: Sådan udføres en gastest (Fuld version) 2024
I VBA programmering returnerer en funktion en værdi. Du kan udføre Funktionsprocedurer og kalde funktionen i Excel 2016. Funktioner kan i modsætning til Sub procedurer udføres på to måder:
-
Ved at kalde funktionen fra en anden Sub procedure eller Function procedure
-
Ved at bruge funktionen i en regneark formel
Prøv denne enkle funktion. Indtast det i et VBA-modul:
Funktion CubeRoot (nummer) CubeRoot = number ^ (1/3) Afslut Funktion
Denne funktion er temmelig wimpy; det beregner kun kubets rod af det tal, der er sendt til det som dets argument. Det giver dog et udgangspunkt for at forstå funktioner. Det illustrerer også et vigtigt begreb om funktioner: hvordan man returnerer værdien. (Du kan huske at en funktion returnerer en værdi, ikke?)
Bemærk, at den enkeltstående kodekode, der udgør denne funktionsprocedure, udfører en beregning. Resultatet af matematikken (antal til effekten 1/3) tildeles den variable CubeRoot. Ikke tilfældigt er CubeRoot også navnet på funktionen. For at fortælle funktionen hvilken værdi, der skal returneres, tildeler du denne værdi til navnet på funktionen.
Opkald fra en Subprocedure
Fordi du ikke kan udføre en funktion direkte, skal du kalde den fra en anden procedure. Indtast følgende enkle procedure i det samme VBA-modul, der indeholder CubeRoot-funktionen:
Sub CallerSub () Ans = CubeRoot (125) MsgBox Ans End Sub
Når du udfører CallerSub-proceduren, viser Excel en meddelelsesboks, der indeholder værdien af Ans-variablen, som er 5.
Her er hvad der foregår: CubeRoot-funktionen udføres, og den modtager et argument på 125. Beregningen udføres af funktionens kode (ved hjælp af den værdi, der overføres som argument), og funktionens returnerede værdi er tildelt til Ans-variabel. MsgBox-funktionen viser derefter værdien af ans-variablen.
Prøv at ændre argumentet, der er overført til CubeRoot-funktionen, og kør CallerSub-makroen igen. Det fungerer ligesom det skal - forudsat at du giver funktionen et gyldigt argument (et positivt tal).
Forresten kan CallerSub-proceduren forenkles en smule. Ans-variablen er ikke rigtig nødvendig, medmindre din kode vil bruge den pågældende variabel senere. Du kan bruge denne enkelt sætning til at opnå det samme resultat:
MsgBox CubeRoot (125)
Kald en funktion fra en regneark formel
Nu er det tid til at kalde denne VBA-funktion procedure fra en regneark formel.Aktivér et regneark i den samme arbejdsbog, der indeholder definitionen af CubeRoot-funktionen. Indtast derefter følgende formel i en hvilken som helst celle:
= CubeRoot (1728)
Cellen viser 12, som faktisk er kube-roten på 1, 728.
Som du måske forventer kan du bruge en cellehenvisning som argumentet for CubeRoot-funktionen. For eksempel, hvis celle A1 indeholder en værdi, kan du indtaste = CubeRoot (A1) . I dette tilfælde returnerer funktionen det antal, der er opnået ved at beregne kubens rod af værdien i A1.
Du kan bruge denne funktion et hvilket som helst antal gange i regnearket. Ligesom Excels indbyggede funktioner vises dine brugerdefinerede funktioner i dialogboksen Indsæt funktion. Klik på knappen Indsæt funktionens værktøjslinje, og vælg kategorien Brugerdefineret. Dialogboksen Indsæt funktion viser din helt egen funktion.
Funktionen CubeRoot vises i kategorien Brugerdefineret i dialogboksen Indsæt funktion.Følg disse trin, hvis du vil have dialogboksen Indsæt funktion, for at få vist en beskrivelse af funktionen:
-
Vælg Udvikler → Kode → Makroer.
Excel viser dialogboksen Makro, men CubeRoot vises ikke i listen. (CubeRoot er en funktionsprocedure, og denne liste viser kun Sub-procedurer.) Skør ikke.
-
Skriv ordet CubeRoot i feltet Makro navn.
-
Klik på knappen Indstillinger.
-
Indtast en beskrivelse af funktionen i beskrivelsesboksen.
-
Klik på OK for at lukke dialogboksen Makroindstillinger.
-
Luk makro-dialogboksen ved at klikke på knappen Annuller.
Denne beskrivende tekst vises nu i dialogboksen Indsæt funktion.
Tjek CubeRoot-funktionen, der bruges i regnearksformler.
Brug af CubeRoot-funktionen i formler.