Door de gebruiker gedefinieerde functie in VBA - Hoe UDF maken? (Voorbeelden)

Excel VBA door de gebruiker gedefinieerde functie (UDF)

Microsoft bedient ons met veel ingebouwde functies om het werk in Excel te versnellen. Met behulp van VBA-codering kunnen we echter onze eigen functies maken en die functies worden technisch "User-Defined Functions" (UDF) genoemd. Ze worden ook wel "aangepaste functies" genoemd in Excel VBA.

Elke formule die vanuit het werkblad met een stukje code toegankelijk is, wordt UDF genoemd. In eenvoudige bewoordingen wordt elke formule die niet is ingebouwd maar beschikbaar in Excel, door de gebruiker gedefinieerde functies genoemd.

Hoe door de gebruiker gedefinieerde functies te creëren?

Hoewel UDF deel uitmaakt van onze module, maken ze geen deel uit van onze reguliere Subroutine in VBA. Dit heet een functieprocedure in VBA. Net als hoe we de macrocodering op dezelfde manier starten met het woord SUB, moeten we dit starten door het woord 'Functie' te gebruiken. Subprocedure heeft start en einde, evenzo Functieprocedure heeft Start en Einde.

Voorbeeld # 1 - Maak een eenvoudige UDF-somfunctie

We zullen onze eigen SOM-functie in Excel maken door twee getallen bij elkaar op te tellen.

  • Om de codering te starten, start u het woord "Functie" in een van de modules.
  • Net zoals we de macro op dezelfde manier een naam geven, moeten we ook onze functie een naam geven. Deze naam wordt gebruikt als formulenaam.

In tegenstelling tot subroutine kunnen we niet simpelweg op enter drukken om een ​​procedure te maken, maar we moeten hier argumenten noemen.

Kijk bijvoorbeeld naar de onderstaande syntaxis van de werkbladfunctie SUM.

Nummer 1, Nummer 2 zijn argumenten van de functie SOM.

  • Evenzo moeten we onze argumenten noemen.

Hier heb ik de argumenten verklaard als "x als geheel getal" en "y als geheel getal". Omdat we numerieke waarde toevoegen, moeten we het gegevenstype alleen als een numeriek gegevenstype toewijzen.

Na het declareren van de argumenten, heb ik ook het retourneringstype van het geheel getal toegewezen, omdat het resultaat gegeven door de functie "OurSum" ook een numerieke waarde is.

  • Nu moeten we binnen de functie de formule noemen die we gaan gebruiken. Hier moeten we de functie gebruiken om mee te beginnen.

We noemden de formule naam " OurSum " moet x en y toevoegen.

  • Oké, sla de code op en ga naar het werkblad.
  • Ik heb hier een paar cijfers ingevoerd. Open het gelijkteken en begin OurSum te typen. U kunt de formulenaam hier zien verschijnen.
  • Zoals hoe we cellen selecteren, selecteer je op dezelfde manier twee cellen afzonderlijk.
  • Nadat u twee cellen heeft geselecteerd, drukt u op de enter-toets om resultaten te zien.

Het werkt dus precies hetzelfde als onze gewone SOM-functie.

  • Oké, nu zal ik de cijfers wijzigen.
  • Nogmaals, ik zal de functie die we hebben gemaakt, toepassen.

Oh!!! We hebben foutwaarden behalve de eerste cel.

U moet zich afvragen waarom we een foutmelding hebben gekregen.

Als je de cel A2 en B2 bekijkt, hebben we de waarden 48170 en 21732. Omdat we het gegevenstype als Integer hebben toegewezen, kan het geen getal hoger dan 32767 bevatten. Dit is de reden waarom we de Excel-fout hebben als #GETAL !.

Nu zal ik nummers toevoegen die kleiner zijn dan 32767.

In de bovenstaande afbeelding zijn alle getallen gehele getallen, dwz minder dan 32767.

In de eerste cel kregen we de resultaten. Maar in de tweede cel, dat wil zeggen cel C2, hebben we de foutwaarde #VALUE !.

Hoewel beide nummers lager zijn dan 32767, krijgen we nog steeds de foutmelding.

Dit komt omdat we het eindresultaat ook als geheel getal hebben gedeclareerd.

Dus als we 16000 en 17229 optellen, krijgen we een waarde als 33229, wat meer is dan de integer datatypelimiet van 32767. Het eindresultaat is dus een foutwaarde.

Voorbeeld # 2 - Maak een functie om logische waarden te testen

We zullen nog een functie maken om de logische waarden te testen. We hebben een functie nodig die "Goed" retourneert als het getal> = 60 is, en we hebben het resultaat nodig als "Slecht" als het getal <= 50 is.

Stap 1: Start de functieprocedure en geef de procedure een naam.

Stap 2: Geef het argument als TestScore als geheel getal.

Stap 3: Ons eindresultaat moet "Goed" of "Slecht" zijn, dus het resultaat moet in String staan.

Stap 4: Eerst moeten we testen of de score> = 60 is of niet. Gebruik de ALS-voorwaarde om te testen.

Stap 5: Als de testscore> = 60 is, hebben we de functie nodig om het resultaat als 'Goed' te retourneren. Dus TestResult = "Goed."

Stap 6: Als de testscore lager is dan 60, moet het functieresultaat 'Slecht' zijn.

Ok, we zijn klaar.

  • Sla de code op en ga naar het werkblad.

Ik heb hier een paar cijfers ingevoerd als testscore.

  • Pas de functie toe die we hebben gemaakt om tot resultaten te komen.
  • Selecteer de cel en druk op Enter.

Dit is waar het bij UDF om draait.

Interessante artikelen...