8.9 Zelfgedefinieerde functies
8.9.1 Functies en parameters
Werkbladfuncties uit Excel en VBA-functies zijn stukjes programma die jij kan gebruiken zonder de achterliggende programmacode te kennen. Je moet enkel weten hoe je een functie correct moet gebruiken. Hiervoor moet je uiteraard de functienaam kennen en de volgorde en het type van eventueel in te vullen parameters.
Nederlands |
Engels |
Parameters | Type resultaat |
|---|---|---|---|
| NU() | NOW() | 0 | datum/tijd |
| JAAR(Nu()) | YEAR(Now()) | 1 | numeriek |
| LINKS(A5;2) | LEFT(A,2) | 2 | tekst |
| DATUM(99;01;01) | DATESERIAL(99,01,01) | 3 | datum |
Parameters zijn gegevens die nodig zijn om de functie te kunnen uitvoeren.
Een functie levert steeds een resultaat (een gegeven) opdit in tegenstelling tot een subprocedure die één of meerdere acties uitvoert. Het gegeventype van het resultaat kan één van de gegeventypes zijn die bij variabelen voorkomen.
Je kan ook zelf dergelijke programmaatjes schrijven en de mogelijkheden van Excel dus uitbreiden en aan je wensen aanpassen!
Voorbeeld
Je wil een functie schrijven om een geldbedrag in één van de EMU-munten om te rekenen naar EURO. Naast het bedrag moet je dus ook de munt opgeven. Je hebt dus straks een functie met 2 parameters. De programmeur kiest zelf hoe de munt moet aangeduid worden bijvoorbeeld dmv. de courante afkortingen (BEF, DEM, ...). of dmv van een getal. Vanaf 31 december 1998 is de waarde van de munt van de 11 EMU-landen tegenover de EURO definitief vastgelegd:
1 EURO is |
Function EURO(x As
Single, y As String) As Single Select Case UCase(y) Case "BEF", "LUF" EURO = x / 40.3399 Case "DEM" EURO = x / 1.95583 Case "ESP" EURO = x / 166.386 Case "FRF" EURO = x / 6.55957 Case "IEP" EURO = x / 0.787564 Case "ITL" EURO = x / 1936.27 Case "NLG" EURO = x / 2.20371 Case "ATS" EURO = x / 13.7603 Case "PTE" EURO = x / 200.482 Case "FIM" EURO = 5.94573 End Select End Function |
|
| 40,3399 | BEF | |
| 1.95583 | DEM | |
| 166,386 | ESP | |
| 6.55957 | FRF | |
| 0.787564 | IEP | |
| 1936.27 | ITL | |
| 40.3399 | LUF | |
| 2.20371 | NLG | |
| 13.7603 | ATS | |
| 200.482 | PTE | |
| 5.94573 | FIM | |
Je merkt een aantal gelijkenissen met een 'gewone' macro of een subprocedure. Hier heb je een functieprocedure.
Werkwijze:
Je kan deze functie nu vanuit het werkblad waarin ze is gemaakt oproepen. In paragraaf 8.11 leer je hoe je zelfgemaakte functies overal kan gebruiken.
Bemerk dat je een functie niet kan opnemen met de macrorecorder.
8.9.2 Optionele parameters
Stel dat je in de functie EURO meestal de omrekening naar BEF wil maken. Het zou dan handig zijn de tweede parameter alleen maar te moeten opgeven indien je een andere munt dan de BEF bedoelt. Dit kan door de tweede parameeter optioneel te maken en er een standaardwaarde aan toe te wijzen. Enkel de eerste regel van de functie verandert:
Public Function EURO(x As Single, Optional y As String = "BEF") As Single |
Werkwijze:
Onthou:
Oefeningen: