Disons que vous essayez de créer un système de gestion scolaire. Ici, vous aurez différents types de variables comme le nom de l’élève, le numéro de liste de l’élève, la classe, etc. , bibliothécaire, classes, principe etc. Maintenant, avoir des variables différentes pour chaque entité à l’école sera un travail compliqué. Que diriez-vous de créer un type de données d’élève, d’enseignant, de classes, etc. qui stocke les valeurs qui leur sont associées. Pour cela, nous pouvons utiliser des types de données définis de VBA.

Dans cet article, nous allons apprendre comment créer votre propre type de données dans VBA. Ils sont appelés UDT de VBA. === Définition d’un type de données défini par l’utilisateur Pour définir une structure ou des UDT dans VBA, nous utilisons le bloc Type___End Type.

Voici la syntaxe d’un UDT.

Type Tname_Of_Data_Type

var1 as datatype  'datatype can be anything, int, array,or even UDT

var2 as datatype

Var3() as datatype

---

VarN() as datatype

End Type

Donc, pour définir un type de données personnalisé dans VBA, nous commençons par Type Keyword. Ensuite, nous écrivons le nom de notre type de données personnalisé. Il est conventionnel d’utiliser T avant le nom du type de données afin que vous puissiez faire la différence entre link: / excel-macros-et-vba-how-to-use-vba-collections-in-excel [vba collections] et les UDT . Les DataTypes peuvent être n’importe quoi. Et Integer, String, Variant, un autre UDT, des tableaux, des collections, n’importe quoi.

Pour utiliser votre UDT dans le programme, déclarez sa variable comme n’importe quelle autre variable.

Sub UseUDT

'Declaring variable of user defined data type

Dim myVar1 as Tname_Of_Data_Type

Dim myVar2 as Tname_Of_Data_Type

End Sub

Facile. Maintenant, pour utiliser les variables dans cet UDT, nous utilisons l’opérateur point.

Utilisez le nom du type de données suivi d’un point et du nom de la variable à l’intérieur.

Sub UseUDT

'Declaring variable of user defined data type

Dim myVar1 as Tname_Of_Data_Type

Dim myVar2 as Tname_Of_Data_Type

myVar1.var1="Abcd"

myVar2.Var2="xyvz"

End Sub

Assez de théorie, passons à un exemple pour voir comment cela fonctionne.

Créer une variable d’étudiant qui stocke les informations relatives à l’étudiant Nous avons donc une tâche pour créer un type de données défini par l’utilisateur qui stocke les informations relatives aux étudiants.

Un élève a un prénom, un nom, un numéro de rôle, une date de naissance, une classe, une section, des matières.

Alors créons-le.

'Created a Public Student Data Type

Public Type Tstudent

fName As String    'For First Name

lName As String    'For Last Name

rNo As Integer    'For Roll Number

clss As string    'For Class

section As String   'For Section Name

subjects() As String 'For Subjects of student

End Type

'Use this Tstudent type in subroutine

Sub StudentsInfo()

'Creating and initializing student type variable

Dim student1 As Tstudent

student1.fName = "Manish"

student1.lName = "Singh"

student1.rNo = 12334

student1.clss = 10

student1.section = "A"

ReDim student1.subjects(2)

student1.subjects(0) = "physics"

student1.subjects(1) = "Math"

'Printing student details.

Debug.Print (student1.fName)

Debug.Print (student1.lName)

Debug.Print (student1.rNo)

Debug.Print (student1.clss)

Debug.Print (student1.section)

Debug.Print (student1.subjects(0))

Debug.Print (student1.subjects(1))

End Sub

Lorsque vous exécutez le sous-marin ci-dessus, il imprimera le résultat comme indiqué ci-dessous:

Manish

Singh

12334

10

A

physics

Math

image

Création d’un tableau d’UDT et éléments d’accès

De même, vous pouvez créer autant de variables de type Tstudent dont vous avez besoin.

Vous pouvez même créer un tableau de type Tstudent comme tout autre type de données.

Public Type Tstudent

fName As String    'For First Name

lName As String    'For Last Name

rNo As Integer    'For Roll Number

clss As string    'For Class

section As String   'For Section Name

subjects() As String 'For Subjects of student

End Type

'Creating an arrays of Tstudents type

Sub SchoolInfo()

Dim schoolName As String

Dim students() As Tstudent

schoolName = "Senior School"

ReDim students(10)

For i = 0 To 9

students(i).fName = "name" & Str(i + 1)

students(i).rNo = i + 1

Next i

Debug.Print ("Name : Roll No")

For i = 0 To 9

Debug.Print (students(i).fName & " : " & students(i).rNo)

Next i

End Sub

Lorsque vous exécutez ce code, il sera imprimé dans la fenêtre immédiate.

Name : Roll No

name 1 : 1

name 2 : 2

name 3 : 3

name 4 : 4

name 5 : 5

name 6 : 6

name 7 : 7

name 8 : 8

name 9 : 9

name 10 : 10

image

Dans le code ci-dessus, nous avons d’abord défini la structure UDT avant et le sous (j’expliquerai plus tard pourquoi). Le nous venons de créer un tableau en utilisant un mot-clé dim comme nous le faisons pour n’importe quelle variable dans VBA. Ensuite, nous avons utilisé Redim pour définir la taille des tableaux. Ensuite, nous utilisons une boucle for pour initialiser le tableau.

Pour accéder aux éléments de la structure, nous utilisons une autre boucle for. C’est ça.

Pourquoi avons-nous déclaré UDT en haut du module?

Si nous déclarons d’abord un UDT dans un module, en dehors de tout sous-programme ou fonction, il est disponible pour tous les modules du classeur. Cela signifie que si vous avez une centaine de sous-marins et de fonctions dans un module, tous peuvent déclarer des variables de type Student dans leur corps. Si l’UDT n’est pas privé, il sera disponible pour tous les modules du classeur. Si vous souhaitez qu’une structure (UDT) soit disponible uniquement pour un module conteneur, déclarez-la privée.

Private Type Tstudent

fName As String

lName As String

rNo As Integer

clss As Integer

section As String

subjects() As String

End Type

Vous ne pouvez pas avoir UDT au niveau de la procédure. Cela signifie que vous ne pouvez pas définir un type de données défini par l’utilisateur dans un sous-programme ou une fonction.

Types définis par l’utilisateur imbriqués Supposons que vous ayez UDT appelé une voiture. La voiture a ses propres éléments. De même, vous avez un UDT appelé vélo qui peut avoir ses propres propriétés.

Disons maintenant que vous avez besoin d’un type de données appelé véhicule. Le véhicule peut avoir une voiture et un vélo comme éléments. Pouvons-nous faire cela? Oui, nous pouvons le faire. Voir le code ci-dessous

Private Type Tcar

seats As Integer

ac As Boolean

typ As String

color As String

manufacturer As String

Dop As Date

rc_no As String

End Type

Private Type Tbike

seats As Integer

typ As String

color As String

manufacturer As String

Dop As Date

rc_no As String

End Type

Private Type Tvehicle

number_of_Vehicle As Integer

bike As Tbike

car As Tcar

End Type

Sub vehicleVarification()

Dim myVehicles As Tvehicle

myVehicles.number_of_Vehicle = 2

myVehicles.bike.seats = 1

myVehicles.bike.typ = "Racing"

myVehicles.car.seats = "4"

myVehicles.car.ac = True

Debug.Print myVehicles.number_of_Vehicle

Debug.Print myVehicles.bike.typ

Debug.Print myVehicles.car.ac

End Sub

Ici, nous avons défini trois types de données définis par l’utilisateur. Le premier est Tcar qui contient des informations relatives aux voitures. Le deuxième est le vélo, il contient également des informations sur le vélo.

Le troisième UDT est Tvehicle. Il contient une variable pour stocker le nombre de véhicules et deux variables de type Tcar et Tbike.

Type privé Tvehicle

number_of_Vehicle As Integer

vélo comme Tbike

voiture comme Tcar

Type de fin

Pour accéder aux variables de Tcar et Tbike, nous pouvons utiliser le type de données Tvehicle. Dans le sous, nous avons défini une seule variable de type Tvehicle comme myVehicles. Lorsque nous créons cette variable, VBA crée également des variables de Tcar et Tbike.

Pour initialiser et accéder aux variables de Tcar et Tcar, nous pouvons utiliser la variable myVehicle. Comme vous pouvez le voir dans le code.

myVehicles.number_of_Vehicle = 2

myVehicles.bike.seats = 1

myVehicles.bike.typ = « Courses »

myVehicles.car.seats = « 4 »

myVehicles.car.ac = True

Lorsque nous exécutons le sous, voici comment le résultat se produit.

image

Cette fonctionnalité augmente vraiment la puissance de la programmation VBA de manière exponentielle. Vous pouvez structurer votre type de données comme des entités du monde réel. Vous pouvez créer des relations entre les types de données qui peuvent être utiles dans un grand projet.

Alors oui les gars, voici comment vous pouvez créer et utiliser un type de données ou une structure défini par l’utilisateur dans VBA. J’espère avoir pu l’expliquer. Si vous avez des questions concernant cet article ou toute autre question liée à VBA, posez-les moi dans la section commentaires ci-dessous. Je serai très heureux de vous entendre.

Articles liés:

lien: / general-topics-in-vba-vba-variables-in-excel [Variables VBA dans Excel] | * VBA signifie Visual Basic pour Applications.

C’est un langage de programmation de Microsoft. Il est utilisé avec les applications Microsoft Office telles que MSExcel, MS-Word et MS-Access, tandis que les variables VBA sont des mots-clés spécifiques.

link: / general-topics-in-vba-excel-vba-variable-scope [Excel VBA Variable Scope] | * Dans tous les langages de programmation, nous avons des spécificateurs d’accès aux variables qui définissent d’où une variable définie peut être accédée. Excel VBA n’est pas une exception. VBA a également des spécificateurs de portée.

lien: / cells-ranges-rows-and-columns-in-vba-quelle-est-la-difference-entre-byref-and-byval-arguments-vba-interview-question [Arguments ByRef et ByVal] | Lorsqu’un argument est passé en tant qu’argument ByRef à un autre sous ou fonction, la référence de la variable réelle est envoyée. Toutes les modifications apportées à la copie de la variable seront reflétées dans l’argument d’origine.

lien: / files-workbook-and-worksheets-in-vba-delete-sheets-sans-confirmation-invites-using-vba-in-microsoft-excel [Supprimer les feuilles sans invites de confirmation en utilisant VBA dans Microsoft Excel] | Puisque vous supprimez des feuilles à l’aide de VBA, vous savez ce que vous faites.

Vous voudriez dire à Excel de ne pas afficher cet avertissement et de supprimer la fichue feuille.

link: / files-workbook-and-worksheets-in-vba-add-and-save-new-workbook-using-vba-in-microsoft-excel [Ajouter et enregistrer un nouveau classeur à l’aide de VBA dans Microsoft Excel 2016] | Dans ce code, nous avons d’abord créé une référence à un objet de classeur. Et puis nous l’avons initialisé avec un nouvel objet classeur. L’avantage de cette approche est que vous pouvez effectuer facilement des opérations sur ce nouveau classeur. Comme enregistrer, fermer, supprimer, etc `link: / menus-toolbars-status-bar-in-vba-display-a-message-on-the-statusbar-using-vba-in-microsoft-excel [Afficher un message sur La barre d’état Excel VBA *] `| La barre d’état dans Excel peut être utilisée comme moniteur de code. Lorsque votre code VBA est long et que vous effectuez plusieurs tâches à l’aide de VBA, vous désactivez souvent la mise à jour de l’écran pour ne pas voir cet écran scintiller.

lien: / general-topics-in-vba-turn-off-warning-messages-using-vba-in-microsoft-excel [Désactiver les messages d’avertissement à l’aide de VBA dans Microsoft Excel 2016] | * Ce code désactive non seulement VBA alertes mais augmente également l’efficacité temporelle du code. Voyons comment.

Articles populaires:

lien: / clavier-formule-raccourcis-50-excel-raccourcis-pour-augmenter-votre-productivité [50 raccourcis Excel pour augmenter votre productivité] | Accélérez votre tâche. Ces 50 raccourcis vous permettront de travailler encore plus rapidement sur Excel.

lien: / formules-et-fonctions-introduction-de-vlookup-function [La fonction RECHERCHEV dans Excel] | C’est l’une des fonctions les plus utilisées et les plus populaires d’Excel qui est utilisée pour rechercher la valeur de différentes plages et feuilles. lien: / tips-countif-in-microsoft-excel [COUNTIF dans Excel 2016] | Comptez les valeurs avec des conditions en utilisant cette fonction étonnante. Vous n’avez pas besoin de filtrer vos données pour compter des valeurs spécifiques.

La fonction Countif est indispensable pour préparer votre tableau de bord.

lien: / excel-formule-et-fonction-excel-sumif-function [Comment utiliser la fonction SUMIF dans Excel] | C’est une autre fonction essentielle du tableau de bord. Cela vous aide à résumer les valeurs sur des conditions spécifiques.