Sub, instruction

Microsoft VBScript

Microsoft® Visual Basic® Scripting Edition Sub, instruction  Référence du langage 
Version 1 


Description
Déclare le nom, les arguments et le code qui forment le corps d'une procédure Sub.
Syntaxe
[Public [Default]| Private] Sub name [(arglist)]
    [statements]
    [Exit Sub]
    [statements]
End Sub

La syntaxe de l'instruction Sub comprend les éléments suivants :

Élément Description
Public Indique que la procédure Sub est accessible à toutes les autres procédures dans tous les scripts.
Default Utilisé seulement avec le mot clé Public dans un bloc Class pour indiquer que la procédure Sub est la méthode par défaut de la classe. Une erreur se produit si plusieurs procédures Default sont spécifiées dans une classe.
Private Indique que la procédure Sub est accessible uniquement aux autres procédures du script dans lequel elle est déclarée.
name Nom de la procédure Sub ; respecte les conventions standard d'affectation de nom à des variables.
arglist Liste de variables représentant les arguments passés à la procédure Sub quand elle est appelée. Les variables multiples sont séparées par des virgules.
statements Tout groupe d'instructions à exécuter dans le corps de la procédure Sub.

L'argument arglist comprend la syntaxe et les éléments suivants :

[ByVal | ByRef] varname[( )]

Élément Description
ByVal Indique que l'argument est transmis par valeur.
ByRef Indique que l'argument est transmis par référence.
varname Nom de la variable représentant l'argument ; respecte les conventions standard d'affectation de nom à des variables.

Notes
En l'absence des mots clés Public ou Private, les procédures Sub sont publiques par défaut. En d'autres termes, elles sont visibles pour toutes les autres procédures de votre script. La valeur des variables locales dans une procédure Sub n'est pas conservée entre les appels à la procédure.

Vous ne pouvez définir une procédure Sub à l'intérieur d'une autre procédure Function ou Property Get.

L'instruction Exit Sub provoque la sortie immédiate d'une procédure Sub. L'exécution du programme se poursuit avec l'instruction suivant l'instruction ayant appelé la procédure Sub. Une procédure Sub peut comporter un nombre indéterminé d'instructions Exit Sub apparaissant en n'importe quel point.

À l'instar d'une procédure Function, une procédure Sub est une procédure distincte qui peut prendre des arguments, exécuter une série d'instructions et changer la valeur de ses arguments. Toutefois, contrairement à la procédure Function procedure qui renvoie une valeur, une procédure Sub ne peut pas être utilisée dans une expression.

Vous appelez une procédure Sub en utilisant le nom de la procédure, suivi de la liste des arguments. Pour plus d'informations sur la manière d'appeler les procédures Sub, consultez l'instruction Call.


Attention  Les procédures Sub peuvent être récursives, autrement dit, elles peuvent s'appeler elles-mêmes pour effectuer une tâche donnée. Toutefois, la récursivité peut amener au dépassement de la capacité de la pile.

Les variables utilisées dans les procédures Sub se divisent en deux catégories : celles qui sont déclarées explicitement dans la procédure et celles qui ne le sont pas. Les premières (déclarées en utilisant Dim ou l'équivalent) sont toujours locales pour la procédure. Les variables utilisées sans avoir été déclarées explicitement dans une procédure sont toujours locales, à moins qu'elles n'aient été explicitement déclarées à un niveau supérieur hors de la procédure.


Attention  Une procédure peut utiliser une variable qui n'est pas déclarée explicitement dans la procédure, mais un conflit peut se produire si vous avez défini un élément au niveau du script qui porte le même nom que celui de la variable. Si votre procédure fait référence à une variable non déclarée portant le même nom qu'une autre procédure, constante ou variable, il est supposé que votre procédure fait référence à ce nom au niveau du script. Pour éviter ce genre de conflit, utilisez une instruction Option Explicit pour forcer la déclaration explicite des variables.