Inhoud
Hoewel Excel veel, waarschijnlijk honderden ingebouwde functies heeft, zoals SOM, VERT.ZOEKEN, LINKS, enzovoort, merkt u vaak dat u een functie nodig hebt die niet bestaat wanneer u Excel gaat gebruiken voor meer gecompliceerde taken. Maak je geen zorgen, niet alles is verloren; alles wat je nodig hebt is om de gewenste functie te creëren.
Stappen
- Maak een nieuwe werkmap of open de werkmap waarin u uw zojuist gemaakte User Defined Function (FDU) wilt gebruiken.
-
Open de Visual Basic Editor die is ingebouwd in Microsoft Excel door naar Extra-> Macro-> Visual Basic Editor te gaan (of door op Alt + F11 te drukken). -
Voeg een nieuwe module toe naar uw werkmap door op de aangegeven knop te klikken. U kunt de door de gebruiker gedefinieerde functie op het werkblad zelf maken zonder een nieuwe module toe te voegen, maar hierdoor kunt u deze niet op andere werkbladen in dezelfde werkmap gebruiken. -
Maak de "header" of "prototype" van uw functie. U moet de volgende structuur hebben: openbare functie TheNameOfYourFunction (param1 As type1, param2 As type2) As returnType Er kunnen zoveel parameters zijn als gewenst, en hun type kan een van de basisgegevenstypen of Excel-objecttypen zijn, zoals Bereik. U kunt parameters zien als de "operanden" waarop uw functie zal werken. Als u bijvoorbeeld SIN (45) zegt om de sinus van 45 graden te berekenen, wordt 45 als parameter genomen. Vervolgens gebruikt uw functiecode deze waarde om een berekening uit te voeren en het resultaat te presenteren. - Voeg de functiecode toe en zorg ervoor dat: 1) gebruik de waarden die door de parameters worden verstrekt; 2) wijs het resultaat toe aan de functienaam; en 3) sluit de functie met "end function". Leren programmeren in VBA of een andere taal kan enige tijd in beslag nemen en vereist een gedetailleerde tutorial. Functies hebben echter vaak kleine codeblokken en gebruiken weinig taalbronnen. De meest bruikbare elementen van de VBA-taal zijn:
- Het blok Als, waarmee u een deel van de code alleen kunt uitvoeren als aan een voorwaarde is voldaan. Bijvoorbeeld:
Openbare functie CourseResult (grid As Integer) As String
Als cijfer> = 5 Dan
CourseResult = "Goedgekeurd"
Anders
CourseResult = "Afgewezen"
Stop als
Einde functie
Let op de elementen in een codeblok Als:ALS voorwaarde THEN code ELSE code END IF. Het sleutelwoord Anders samen met het tweede deel van de code zijn optioneel.
- Het blok Van, die een stukje code uitvoert Terwijl (terwijl) of Tot (totdat) aan een voorwaarde is voldaan. Bijvoorbeeld:
Openbare functie IsPrime (waarde As Integer) As Boolean
Dim i als geheel getal
ik = 2
IsPrime = Waar
Van
Als waarde / i = Int (waarde / i) Dan
IsPrime = False
Stop als
ik = ik + 1
Loop While i <waarde And IsPrime = True
Einde functie
Kijk nog eens naar de elementen:DOE code LOOP TERWIJL / TOT voorwaarde. Let ook op de tweede regel waar een variabele wordt "gedeclareerd". U kunt variabelen aan uw code toevoegen, zodat u ze later kunt gebruiken. Variabelen fungeren als tijdelijke waarden binnen de code. Bekijk ten slotte de functiedeclaratie als BOOLEAN, een gegevenstype dat alleen de waarden TRUE en FALSE toestaat. Deze methode om te bepalen of een getal een priemgetal is, is niet ideaal, maar ik laat het er liever bij staan om de code beter leesbaar te maken.
- Het blok Voor, dat een bepaald aantal keren een stuk code uitvoert. Bijvoorbeeld:
Public Function Factorial (value As Integer) As Long
Dim resultaat zo lang
Dim i als geheel getal
Als waarde = 0 Dan
resultaat = 1
ElseIf waarde = 1 Then
resultaat = 1
Anders
resultaat = 1
Voor i = 1 tot waarde
resultaat = resultaat * i
De volgende
Stop als
Factorial = resultaat
Einde functie
Kijk nog eens naar de elementen:FOR variabele = ondergrens TO bovengrens code VOLGENDE. Let ook op het element Anders toegevoegd in de verklaring Als, waarmee u meer opties kunt toevoegen om de code uit te voeren. Kijk ten slotte naar de functieverklaring en de variabele "resultaat" als LangHet gegevenstype Lang staat veel hogere waarden toe dan ’Geheel getal’.
Hieronder staat de code voor een functie die getallen omzet in woorden.
- Het blok Als, waarmee u een deel van de code alleen kunt uitvoeren als aan een voorwaarde is voldaan. Bijvoorbeeld:
- Ga terug naar je werkboek en gebruik de functie door de inhoud van een cel te beginnen met een Gelijk gevolgd door de naam van uw rol. Voeg een haakje openen toe aan de functienaam, de parameters gescheiden door komma en een laatste haakje sluiten. Bijvoorbeeld:= NumberToLetters (A4) U kunt ook uw door de gebruiker gedefinieerde formule gebruiken door ernaar te zoeken in de categorie Gebruiker gedefinieerde in de wizard om de formule in te voeren. Klik gewoon op de knop Fx bevindt zich aan de linkerkant van de formulebalk. Er kunnen drie typen parameters zijn:
- Constante waarden die rechtstreeks in de celformule worden ingevoerd. Tekenreeksen moeten in dit geval tussen aanhalingstekens worden geplaatst.
- Celverwijzingen zoals B6 of intervallen zoals A1: C3 (de parameter moet van het type Breken"")
- Andere functies die binnen uw functie zijn gerangschikt (uw functie kan ook binnen andere functies worden gegroepeerd). Dat is: = Factorial (MAX (D6: D8))
- Controleer of het resultaat in orde is na meerdere keren gebruik van de functie ervoor zorgen dat deze verschillende parameterwaarden correct verwerkt:
Tips
- Wanneer u een codeblok schrijft binnen een controlestructuur zoals If, For, Do etc., vergeet dan niet om het blok te laten inspringen met behulp van enkele spaties of tabs (de inspringingsstijl is aan u).Op deze manier wordt uw code gemakkelijker te begrijpen en wordt het veel gemakkelijker om fouten op te sporen en de code te verbeteren.
- Excel heeft veel ingebouwde functies en de meeste berekeningen kunnen alleen of in combinatie worden uitgevoerd. Zoek in de lijst met beschikbare functies voordat u uw eigen code start. De uitvoering kan sneller zijn als u ingebouwde functies gebruikt.
- Soms heeft een functie mogelijk niet alle parameters nodig om een resultaat te berekenen. In dat geval kunt u het trefwoord gebruiken Optioneel voor de parameternaam in de functiekop. U kunt de IsMissing (parameternaam) binnen de code om te bepalen of een waarde is toegewezen aan de parameter of niet.
- Als u niet weet hoe u de code voor een functie moet schrijven, lees dan Hoe u een eenvoudige macro schrijft in Microsoft Excel.
- Gebruik een naam die nog niet is gedefinieerd als een functienaam in Excel, anders kunt u uiteindelijk slechts één van de functies gebruiken.
Waarschuwingen
- Vanwege beveiligingsmaatregelen kunnen sommige mensen macro's uitschakelen. Laat uw collega's weten dat het boek dat u verzendt macro's bevat en vertrouwd kan worden omdat ze uw computers niet beschadigen.
- De functies die in dit artikel worden gebruikt, zijn niet de beste manier om de genoemde problemen op te lossen. Ze werden alleen gebruikt om het gebruik van taalcontrolestructuren uit te leggen.
- VBA heeft, net als elke andere taal, naast Do, If en For nog verschillende andere besturingsstructuren. Deze werden hier uitgelegd om duidelijk te maken wat er binnen de broncode van de functie kan worden gedaan. Er zijn veel online tutorials beschikbaar waar u VBA kunt leren.