Static, instruction

Utilisé au niveau de la procédure pour déclarer des variables et allouer de l’espace de stockage. Les variables déclarées à l’aide de l’instruction Static conservent leurs valeurs pendant toute la durée de l’exécution du code.

Syntaxe

Varname statique [ ( [ indices ] ) ] ] [ As [ New ] type ], [ varname [ ( [ indices ] ) ] ] [ As [ New ] type ]] . .

La syntaxe de l’instruction Static comprend les éléments suivants :

Élément Description
varname Obligatoire. Nom de la variable ; respecte les conventions d'affectation des noms de variables standard.
subscripts Facultatif. Dimensions d’une variable de tableau ; jusqu’à 60 dimensions multiples peuvent être déclarées. L’argument indices utilise la syntaxe suivante :

[ lowerTo ] upper [ , [ lowerTo ] upper ] . . .

Lorsque pas explicitement indiqué dans lower, la limite inférieure d’une matrice est contrôlée par la déclaration Option Base . La limite inférieure correspond à zéro si aucune instructionOption Base n’est présente.
New Facultatif. Mot clé qui permet la création implicite d’un objet. Si vous utilisez New lors de la déclaration d’une variable objet, une instance de l’objet est créée lors de la première référence à celui-ci, ce qui évite de définir la référence d’objet par le biais de l’instruction Set. Le mot clé New ne permet pas de déclarer des variables de types de données intrinsèques, ni de déclarer des instances d’objets dépendants.
type Facultatif. Type de données de la variable ; Peut être Byte, Boolean, Integer, Long, Currency, Single, Double, Decimal (non pris en charge actuellement), Date, String (pour les chaînes de longueur variable), Stringlength (pour les chaînes de longueur fixe), Object, Variant, un type défini par l’utilisateur ou un type d’objet. Utiliser une clause distincteen tant quetype pour chaque variable définie.

Remarques

Une fois le code de module en cours d’exécution, les variables déclarées avec l’instruction Static conservent leur valeur jusqu’à ce que le module soit réinitialisé ou redémarré. Dans les modules de classe, les variables déclarées à l’aide de l’instruction Static conservent leur valeur dans chaque instance de classe jusqu’à la destruction de cette instance. Dans les modules de feuille, les variables statiques conservent leur valeur jusqu’à la fermeture de la feuille.

Utilisez l’instruction Static dans des procédures non statiques pour déclarer explicitement les variables visibles seulement au sein de la procédure, mais dont la durée de vie est égale à celle du module dans lequel la procédure est définie.

Utilisez une instruction Static dans une procédure pour déclarer le type de données d’une variable devant conserver sa valeur entre les appels de procédure. Par exemple, l’instruction ci-dessous déclare un tableau de taille fixe contenant des entiers :

Static EmployeeNumber(200) As Integer 

L’instruction suivante déclare une variable pour une nouvelle instance d’une feuille de calcul :

Static X As New Worksheet 

Si le mot clé New n’est pas utilisé lors de la déclaration d’une variable objet, la variable qui fait référence à l’objet doit se voir attribuer un objet existant à l’aide de l’instruction Set avant de pouvoir l’utiliser. Jusqu’à ce qu’un objet lui soit attribué, la variable objet déclarée a la valeur spéciale Nothing, ce qui indique qu’elle ne fait référence à aucune instance particulière d’un objet. Si vous utilisez le mot clé New lors de la déclaration, une instance de l’objet est créée lors de la première référence à ce dernier.

Si vous n’indiquez aucun type de données ou de type d’objet et que le module ne comporte aucune instruction Deftype, la variable est de type Variant par défaut.

Remarque

L’instruction Static et le mot clé Static sont apparentés, mais ont un effet différent. Si vous déclarez une procédure à l’aide du mot clé Static (comme dans Static Sub CountSales ()), l’espace de stockage pour toutes les variables locales au sein de la procédure est alloué une seule fois, et la valeur des variables est conservée pendant toute la durée de l’exécution du programme. Avec les procédures non statiques, l’espace de stockage est attribué aux variables à chaque appel de la procédure et est libéré à chaque sortie de procédure. L’instruction Static permet de déclarer des variables au sein de procédures non statiques et de conserver leur valeur pendant toute la durée de l’exécution du programme.

Lorsque les variables sont initialisées, une variable numérique est initialisée à 0, une chaîne de longueur variable est initialisée à une chaîne vide ("") et une chaîne de longueur fixe est remplie de zéros. Les variables de type Variant sont initialisées à la valeur Empty. Chaque élément d'une variable de type défini par l'utilisateur est initialisé comme s'il s'agissait d'une variable distincte.

Remarque

Lorsque vous utilisez des instructions Static dans une procédure, placez-les au début de la procédure avec les autres instructions déclaratives, comme Dim.

Exemple

Cet exemple utilise l’instruction Static pour conserver la valeur d’une variable tant que le code du module est en cours d’exécution.

' Function definition. 
Function KeepTotal(Number) 
    ' Only the variable Accumulate preserves its value between calls. 
    Static Accumulate 
    Accumulate = Accumulate + Number 
    KeepTotal = Accumulate 
End Function 
 
' Static function definition. 
Static Function MyFunction(Arg1, Arg2, Arg3) 
    ' All local variables preserve value between function calls. 
    Accumulate = Arg1 + Arg2 + Arg3 
    Half = Accumulate / 2 
    MyFunction = Half 
End Function

Voir aussi

Assistance et commentaires

Avez-vous des questions ou des commentaires sur Office VBA ou sur cette documentation ? Consultez la rubrique concernant l’assistance pour Office VBA et l’envoi de commentaires afin d’obtenir des instructions pour recevoir une assistance et envoyer vos commentaires.