Hoe maak je een User defined functie met optionele benoemde argumenten in aanroep

Status
Niet open voor verdere reacties.

daan108

Gebruiker
Lid geworden
8 feb 2008
Berichten
138
Beste mensen,
Hoe kan ik een 'user defined function' maken die optionele argumenten bevat die in de aanroep met naam gegeven worden zodat alleen de gebruikte argumenten in de aanroep hoeven te worden vermeld. Dus de aanroep ziet er zo uit:
Code:
X = MijnUDF(Arg1:=a, Arg2:="hoi", Arg4:=3.14)
In bovenstaand voorbeeld wordt Arg3 weggelaten maar zonder dat er een leeg item in de argumentenlijst staat.
Hier wil ik namelijk vanaf:
Code:
X = MijnUDF(a, "hoi", , 3.14)

De vraag is nu hoe de code van MijnUDF eruit ziet zodanig dat ook de eerste manier van aanroepen geldig is?
Ten overvloede, voor de twee manier van aanroepen lukt het me wel:
Code:
Function MijnUDF2(Arg1, optional Arg2, optional Arg3, optional Arg4)
...code...
 
Als ik je goed begrijp, geef een default waarde mee aan jouw optionele argumenten:

Code:
Function MijnUDF2(Arg1, Optional Arg2, Optional Arg3 as string= "default" , Optional Arg4)
 
ik doel op een default waarde in jouw Funktie zelf niet in de aanroep
 
Ik denk niet dat wat jij wilt kan; als je argumenten meegeeft aan een functie moet die functie weten op welke plek die moet vallen. Door een argument 'op te schuiven' wordt die aan een andere plek toegewezen, met noodlottige gevolgen. Je kunt hooguit aangeven dat een optie leeg mag zijn, door er Optional voor te zetten, maar de plek moet vastliggen. Ach, als een gebruiker te beroerd is om een extra komma te typen, dan ontsla je hem/haar toch gewoon? :D
 
Hahaha, ik ben alleen niet de baas.

Veel ingebouwde functies kunnen het wel, juist door de 'argumentnaam' op te geven gevolgd door := en de waarde snapt de functie dat deze argumenten de door gebruiker opgegeven waarde krijgen en de overige argumenten de standaardwaarde (nl. de weggelaten argumenten; zonder extra komma's).

Ik heb nog overwogen om de aanroep zo te doen dat de rits argumenten als 1 string opgeven wordt, maar dan heeft de functie maar 1 argument, wat lastig is. Bovendien moet dan de hele string ontleed worden.

Bedankt voor de reacties.
 
Misschien kun je een klassemodule maken waarin dat kan. De techniek moet in de programmeertaal zitten, want je hebt wel gelijk met je opmerking dat een ingebouwde functie dat wel kan. Overigens is het nog maar de vraag of dat nou zoveel gebruiksvriendelijker is; je ‘typt je eigen het schompes’. En een kleine typfout in de parameter, en het zaakje werkt niet meer. Een (of een paar) komma tikken is een heel stuk sneller. Bovendien krijg je de argumentnaam wel te zien, dus een gebruiker kan zien wat hij/zij aan het invullen is.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan