Inhoudsopgave:
Video: 04/28 - Calling Sub Procedures - MS Access VBA Intermediate Tutorials 2024
Bij VBA-programmering retourneert een functie een waarde. U kunt functieprocedures uitvoeren en de functie in Excel 2016 aanroepen. Functies kunnen, in tegenstelling tot subprocedures, slechts op twee manieren worden uitgevoerd:
-
door de functie aan te roepen vanuit een andere subprocedure of functieprocedure
-
door de functie in een werkbladformule
Probeer deze eenvoudige functie. Voer het in een VBA-module in:
Functie CubeRoot (nummer) CubeRoot = nummer ^ (1/3) Eindfunctie
Deze functie is vrij wimpy; het berekent alleen de kubuswortel van het getal dat aan het argument is doorgegeven. Het biedt echter een startpunt voor het begrijpen van functies. Het illustreert ook een belangrijk concept over functies: hoe de waarde terug te geven. (Je weet nog wel dat een functie een waarde retourneert, toch?)
Merk op dat de enkele regel code die deel uitmaakt van deze functieprocedure een berekening uitvoert. Het resultaat van de wiskunde (getal tot het vermogen van 1/3) wordt toegewezen aan de variabele CubeRoot. Niet toevallig is CubeRoot ook de naam van de functie. Om de functie aan te geven welke waarde moet worden geretourneerd, wijst u die waarde toe aan de naam van de functie.
De functie oproepen vanuit een subprocedure
Omdat u een functie niet rechtstreeks kunt uitvoeren, moet u deze vanuit een andere procedure oproepen. Voer de volgende eenvoudige procedure in dezelfde VBA-module in die de CubeRoot-functie bevat:
SubbellerSub () Ans = CubeRoot (125) MsgBox Ans End Sub
Wanneer u de procedure CallerSub uitvoert, wordt in Excel een berichtvenster weergegeven met de waarde van de variabele Ans, die 5 is.
Hier is wat er aan de hand is: De CubeRoot-functie wordt uitgevoerd en er wordt een argument van 125 ontvangen. De berekening wordt uitgevoerd door de functiecode (met behulp van de waarde die is doorgegeven als een argument) en de geretourneerde waarde van de functie wordt toegewezen aan de Ans variabele. De functie MsgBox geeft vervolgens de waarde van de Ans-variabele weer.
Probeer het argument dat wordt doorgegeven aan de CubeRoot-functie te wijzigen en de macro CallerSub opnieuw uit te voeren. Het werkt precies zoals het zou moeten - ervan uitgaande dat je de functie een geldig argument geeft (een positief getal).
Overigens zou de procedure CallerSub een beetje vereenvoudigd kunnen zijn. De Ans-variabele is niet echt nodig, tenzij uw code die variabele later zal gebruiken. U kunt deze enkele instructie gebruiken om hetzelfde resultaat te verkrijgen:
MsgBox CubeRoot (125)
Een functie oproepen vanuit een werkbladformule
Nu is het tijd om deze VBA-functieprocedure aan te roepen vanuit een werkbladformule.Activeer een werkblad in dezelfde werkmap die de functiedefinitie van CubeRoot bevat. Voer vervolgens de volgende formule in een cel in:
= CubeRoot (1728)
De cel geeft 12 weer, wat inderdaad de kubuswortel is van 1, 728.
Zoals u zou verwachten, kunt u een celverwijzing gebruiken als het argument voor de CubeRoot-functie. Als cel A1 bijvoorbeeld een waarde bevat, kunt u = CubeRoot (A1) invoeren. In dit geval retourneert de functie het getal dat is verkregen door de kubuswortel van de waarde in A1 te berekenen.
U kunt deze functie een onbeperkt aantal keren gebruiken in het werkblad. Net als de ingebouwde functies van Excel, verschijnen uw aangepaste functies in het dialoogvenster Functie invoegen. Klik op de werkbalkknop Functie invoegen en kies de categorie Door gebruiker gedefinieerd. In het dialoogvenster Functie invoegen wordt uw eigen functie weergegeven.
De CubeRoot-functie wordt weergegeven in de categorie Door gebruiker gedefinieerd van het dialoogvenster Functie invoegen.Volg de onderstaande stappen als u in het dialoogvenster Functie invoegen een beschrijving van de functie wilt weergeven:
-
Kies Ontwikkelaar → Code → Macro's.
Excel geeft het dialoogvenster Macro weer, maar CubeRoot wordt niet in de lijst weergegeven. (CubeRoot is een functieprocedure en deze lijst toont alleen subprocedures.) Geen zorgen.
-
Typ het woord CubeRoot in het vak Macro-naam.
-
Klik op de knop Opties.
-
Voer een beschrijving van de functie in het vak Beschrijving in.
-
Klik op OK om het dialoogvenster Macro-opties te sluiten.
-
Sluit het dialoogvenster Macro door op de knop Annuleren te klikken.
Deze beschrijvende tekst wordt nu weergegeven in het dialoogvenster Functie invoegen.
Bekijk de CubeRoot-functie die wordt gebruikt in werkbladformules.
De CubeRoot-functie gebruiken in formules.