Sub, instructie

       

Declareert de naam, argumenten en programmacode waaruit het hoofddeel van de procedure Sub is opgebouwd.

Syntaxis

[Private | Public | Friend] [Static] Sub naam [(argumenten)]
[instructies]
[Exit Sub]
[instructies]

End Sub

De syntaxis van de instructie Sub bevat de volgende onderdelen:

Onderdeel Beschrijving
Public Optioneel. Geeft aan dat de procedure Sub 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 Sub alleen toegankelijk is voor andere procedures in de module waarin deze werd gedeclareerd.
Friend Optioneel. Wordt alleen gebruikt in een klassenmodule. Geeft aan dat de procedure Sub 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 Sub tussen oproepen worden opgeslagen. Het onderdeel Static is niet van invloed op variabelen die buiten de procedure Sub zijn gedeclareerd, zelfs niet als deze in dezelfde procedure worden gebruikt.
naam Vereist. De naam van de procedure Sub. 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 Sub wanneer deze wordt opgeroepen. Meerdere variabelen worden door komma's van elkaar gescheiden.
instructies Optioneel. Een groep instructies die wordt uitgevoerd in het hoofddeel van de procedure Sub.

Het argument argumenten bevat de volgende syntaxis en onderdelen:

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

Onderdeel Beschrijving
Optional Optioneel. Een sleutelwoord dat aangeeft dat een argument niet is vereist. 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 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 Sub. 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   Subprocedures kunnen recursief zijn, dat wil zeggen dat ze zichzelf kunnen oproepen om een bepaalde taak uit te voeren. Recursie kan echter stackoverloop veroorzaken. Het sleutelwoord Static wordt meestal niet gebruikt in recursieve subprocedures.

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

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

Evenals de procedure Function is de procedure Sub een afzonderlijke procedure waarvoor u argumenten kunt opgeven, instructies kunt uitvoeren of de waarden van de argumenten kunt wijzigen. In tegenstelling tot de procedure Function, die een resultaatwaarde geeft, kunt u een procedure Sub niet in een expressie gebruiken.

U roept een procedure Sub aan met de procedurenaam gevolgd door de argumentenlijst. Zie de instructie Call voor meer informatie over het oproepen van een procedure Sub.

De variabelen die in de procedure Sub 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 naar een niet-gedeclareerde variabele verwijst met dezelfde naam als een andere constante, variabele of procedure, wordt verondersteld dat uw procedure verwijst naar de naam die wordt gebruikt op moduleniveau. Declareer variabelen expliciet om dit conflict te voorkomen. U kunt de instructie Option Explicit gebruiken om het expliciet declareren van variabelen te forceren.

Opmerking   U kunt GoSub, GoTo of Return niet gebruiken om een procedure Sub te openen of af te sluiten.