Function, instructie

       

Declareert de naam, argumenten en programmacode die het hoofddeel van de procedure Function vormen.

Syntaxis

[Public | Private | Friend] [Static] Function naam [(argumenten)] [As type]
[instructies]
[naam = expressie]
[Exit Function]
[instructies]
[naam = expressie]

End Function

De syntaxis van de instructie Function bevat de volgende onderdelen:

Onderdeel Beschrijving
Public Optioneel. Geeft aan dat de procedure Function toegankelijk is voor alle andere procedures in alle modules. Als u dit argument gebruikt in een persoonlijke module (een module met een instructie Option Private) is de procedure niet beschikbaar buiten het project.
Private Optioneel. Geeft aan dat de procedure Function alleen toegankelijk is voor andere procedures in de module waarin de functie werd gedeclareerd.
Friend Optioneel. Wordt alleen gebruikt in een klassenmodule. Geeft aan dat de procedure Function tijdens het gehele project zichtbaar is, maar niet voor een controller van een exemplaar van een object.
Static Optioneel. Geeft aan dat de lokale variabelen van de procedure Function tussen oproepen worden opgeslagen. Het kenmerk Static is niet van invloed op variabelen die buiten de Function zijn gedeclareerd, zelfs niet als deze in dezelfde procedure worden gebruikt.
naam Vereist. De naam van de Function. Voor deze naam gelden de standaardregels voor naamgeving van een variabele.
argumenten Optioneel. Een lijst met variabelen die argumenten aangeven die worden doorgegeven aan de procedure Function wanneer deze wordt opgeroepen. Meerdere variabelen worden door komma's van elkaar gescheiden.
type Optioneel. Het gegevenstype van de waarde die als resultaat wordt gegeven door de procedure Function. Toegestaan zijn: Byte, Boolean, Integer, Long, Currency, Single, Double, Decimal (momenteel niet ondersteund), Date, String (uitgezonderd tekenreeksen met vaste lengte), Object, Variant of een door de gebruiker gedefinieerd type.
instructies Optioneel. Een groep instructies die wordt uitgevoerd in het hoofddeel van de procedure Function.
expressie Optioneel. De resultaatwaarde van de Function.

Het argument argumenten bevat de volgende syntaxis en onderdelen:

[Optional] [ByVal | ByRef] [ParamArray] varnaam[( )] [As type] [=standaardwaarde]

Onderdeel Beschrijving
Optional Optioneel. Geeft aan dat een argument niet nodig is. Als u dit sleutelwoord gebruikt, moeten alle volgende argumenten in argumenten ook optioneel zijn en worden gedeclareerd met het sleutelwoord Optional. U kunt Optional niet gebruiken voor een argument als u gebruik maakt van het argument ParamArray.
ByVal Optioneel. Geeft aan dat het argument via een waarde wordt doorgegeven.
ByRef Optioneel. Geeft aan dat het argument via een verwijzing wordt doorgegeven. De standaardinstelling in Visual Basic is ByRef.
ParamArray Optioneel. Wordt alleen gebruikt als het laatste argument in argumenten om aan te geven dat het laatste argument een Optional-matrix is met onderdelen van het type Variant. Met het sleutelwoord ParamArray kunt u een willekeurig aantal argumenten opnemen. U mag ParamArray niet gebruiken met de sleutelwoorden ByVal, ByRef of Optional.
Varnaam Vereist. De naam van de variabele die het argument aangeeft dat aan de procedure wordt doorgegeven. Hiervoor gelden de standaardregels voor naamgeving van een variabele.
type Optioneel. Het gegevenstype van het argument dat wordt doorgegeven aan de procedure. De volgende typen zijn geldig: Byte, Boolean, Integer, Long, Currency, Single, Double, Decimal (momenteel niet ondersteund), Date, String (uitsluitend met variabele lengte), Object, Variant of een specifiek objecttype. Als de parameter niet Optional is, mag ook een door de gebruiker gedefinieerd type worden opgegeven.
standaardwaarde Optioneel. Een willekeurige constante of constantenexpressie. Alleen geldig voor Optional-parameters. Als het type een Object is, kan een expliciete standaardwaarde alleen Nothing zijn.

Notities

Als het argument Public, Private of Friend niet expliciet is opgegeven, is Public de standaardinstelling voor de procedures Function. Als u het argument Static niet gebruikt, worden de waarden van lokale variabelen niet bewaard tussen de verschillende procedureoproepen. Het sleutelwoord Friend kan alleen worden gebruikt in klassenmodules. Maar procedures kunnen in elke module van een project toegang tot procedures Friend krijgen. Een procedure Friend verschijnt niet in de typebibliotheek van de bijbehorende bovenliggende klasse en kan ook niet laat gebonden zijn.

Let op   Een procedure Function kan recursief zijn. Dat wil zeggen dat de procedure zichzelf oproept om een bepaalde taak uit te voeren. Recursie kan echter stackoverloop veroorzaken. Het sleutelwoord Static wordt meestal niet samen met een recursieve procedure Function gebruikt.

Alle uitvoerbare programmacode moet in de procedure worden opgenomen. U kunt een procedure Function niet definiδren binnen een andere procedure Function, Sub of Property.

De instructie Exit Function zorgt ervoor dat de procedure Function onmiddellijk wordt verlaten. De uitvoering van het programma gaat verder met de instructie die volgt op de instructie waarmee de procedure Function werd opgeroepen. U kunt een willekeurig aantal instructies Exit Function opnemen op elke plaats in een procedure Function.

Evenals een procedure Sub is de procedure Function een afzonderlijke procedure waarvoor u argumenten kunt opgeven, een reeks instructies kunt uitvoeren, of waarvoor u de waarden van de argumenten kunt wijzigen. In tegenstelling tot een procedure Sub kunt u een procedure Function, net als een intrinsieke functie (bijvoorbeeld Sqr, Cos, of Chr), aan de rechterzijde van een expressie gebruiken als u het resultaat van de functie wilt gebruiken.

U roept de procedure Function aan door in een expressie de naam van de functie op te nemen, gevolgd door een argumentenlijst tussen haakjes. Zie de instructie Call voor meer informatie over het oproepen van een procedure Function.

Als u wilt dat een functie een resultaatwaarde geeft, wijst u de waarde toe aan de naam van de functie. U kunt deze toewijzingen onbeperkt op willekeurige posities in de procedure plaatsen. Als u geen waarde hebt toegewezen aan naam, geeft de procedure als resultaat een standaardwaarde. Een numerieke functie geeft bijvoorbeeld 0, een tekenreeksfunctie een tekenreeks met een lengte nul ("") en een functie Variant geeft als resultaat Empty. Een functie die als resultaat een objectverwijzing geeft, geeft als resultaat Nothing als aan naam geen objectverwijzing is toegewezen (met behulp van Set) binnen de Function.

Het onderstaande voorbeeld geeft aan hoe u een resultaatwaarde toewijst aan de functie BinairZoeken. In dit geval wordt de waarde False aan de naam toegewezen om aan te geven dat een bepaalde waarde niet is gevonden.

Function BinarySearch(. . .) As Boolean
. . .
    ' Value not found. Return a value of False.
    If lower > upper Then
        BinarySearch = False
        Exit Function
    End If
. . .
End Function

De variabelen die in de procedure Function worden gebruikt, vallen uiteen in twee categorieδn: variabelen die expliciet binnen een procedure worden gedeclareerd, en variabelen waarbij dit niet het geval is. Variabelen die expliciet worden gedeclareerd in een procedure (met Dim of een equivalent), zijn altijd lokale variabelen van de procedure. Andere variabelen die wel worden gebruikt maar niet expliciet in een procedure zijn gedeclareerd, zijn ook lokaal tenzij deze op een hoger niveau buiten de procedure zijn gedeclareerd.

Let op   Een procedure kan een variabele gebruiken die niet expliciet in de procedure is gedeclareerd. Er kan echter een naamconflict optreden als u eerder een argument met dezelfde naam hebt gedefinieerd op moduleniveau. Als de procedure verwijst naar een niet-gedeclareerde variabele met dezelfde naam als een andere procedure, constante of variabele, wordt verondersteld dat de procedure verwijst naar de naam op moduleniveau. Declareer variabelen expliciet om deze conflicten te voorkomen. U kunt de instructie Option Explicit gebruiken om het expliciet declareren van variabelen te forceren.

Let op   Visual Basic kan rekenkundige expressies opnieuw rangschikken om de interne efficiδntie te vergroten. Vermijd het gebruik van de procedure Function in een rekenkundige expressie wanneer de functie de waarde van variabelen in dezelfde expressie wijzigt.