Type, instruction

Utilisé au niveau du module pour définir un type de données défini par l’utilisateur contenant un ou plusieurs éléments.

Syntaxe

[ Privé | Public ] Typevarnameelementname [ ( [ indices ] ) ] En tant quetype
[ elementname [ [ indices ] ) ] Astype ] . . .
End Type

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

Élément Description
Public Facultatif. Utilisé pour déclarer des types définis par l’utilisateur disponibles dans toutes les procédures de l’ensemble des modules de tous les projets.
Private Facultatif. Utilisé pour déclarer des types définis par l’utilisateur disponibles uniquement dans le module dans lequel a lieu la déclaration.
varname Obligatoire. Nom du type défini par l’utilisateur ; suit les conventions d’affectation de noms de variables standard.
Elementname Obligatoire. Nom d’un élément de type défini par l’utilisateur. Les noms d’éléments respectent également les conventions standard d’affectation de noms aux variables, mais des mots clés peuvent être utilisés.
subscripts 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.
type Obligatoire. Type de données de l’élément ; 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 autre type défini par l’utilisateur ou un type d’objet.

Remarques

L’instruction Type ne peut être utilisée qu’au niveau du module. Après avoir déclaré un type défini par l’utilisateur à l’aide de l’instruction Type , vous pouvez déclarer une variable de ce type n’importe où dans l’étendue de la déclaration. Utilisez les mots clés Dim, Private, Public, ReDim ou Static pour déclarer une variable de type défini par l’utilisateur.

Dans les modules standard et les modules de classe, les types définis par l’utilisateur sont publics par défaut. Cette visibilité peut être modifiée à l’aide du mot clé Private .

Les numéros de ligne et les étiquettes de ligne ne sont pas autorisés dans les blocs Type...End Type.

Les types définis par l’utilisateur sont souvent utilisés avec les enregistrements de données, car ces derniers sont fréquemment constitués d’un certain nombre d’éléments connexes n’ayant pas tous le même type de données.

L’exemple suivant montre l’utilisation de tableaux de taille fixe dans un type défini par l’utilisateur :

Type StateData 
    CityCode (1 To 100) As Integer    ' Declare a static array. 
    County As String * 30 
End Type 
 
Dim Washington(1 To 100) As StateData 

Dans l’exemple précédent, StateData inclut le CityCode tableau statique et l’enregistrement Washington a la même structure que StateData.

Quand vous déclarez un tableau de taille fixe dans un type défini par l’utilisateur, ses dimensions doivent être définies sous forme de littéraux numériques ou de constantes plutôt que sous forme de variables.

Exemple

Cet exemple utilise l’instruction Type pour créer un type de données défini par l’utilisateur. L’instruction Type n’est utilisée qu’au niveau du module. Si l’instruction Type apparaît dans un module de classe, elle doit être précédée du mot clé Privé.

Type EmployeeRecord    ' Create user-defined type. 
    ID As Integer    ' Define elements of data type. 
    Name As String * 20 
    Address As String * 30 
    Phone As Long 
    HireDate As Date 
End Type 
Sub CreateRecord() 
    Dim MyRecord As EmployeeRecord    ' Declare variable. 
 
    ' Assignment to EmployeeRecord variable must occur in a procedure. 
    MyRecord.ID = 12003    ' Assign a value to an element. 
End Sub

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.