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: