Angenommen, Sie versuchen, ein Schulverwaltungssystem zu erstellen. Hier haben Sie verschiedene Arten von Variablen wie Schülername, Schülernummer, Klasse usw. Eine Schule hat auch Lehrer, also gibt es Lehrernamen, Lehrfach, Klassen usw. Ebenso gibt es viele andere Objekte wie , Bibliothekar, Klassen, Prinzip usw. Jetzt unterschiedliche Variablen für jede Entität in der Schule zu haben, wird eine unordentliche Arbeit sein. Wie wäre es, wenn Sie einen Datentyp für Schüler, Lehrer, Klassen usw. erstellen, in dem die damit verbundenen Werte gespeichert sind. Hierfür können wir definierte Datentypen von VBA verwenden.

In diesem Artikel erfahren Sie, wie Sie in VBA Ihren eigenen Datentyp erstellen können. Sie werden als UDTs von VBA bezeichnet. === Definieren eines benutzerdefinierten Datentyps Um eine Struktur oder UDTs in VBA zu definieren, verwenden wir den Block Type___End Type.

Hier ist die Syntax eines 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

Um einen benutzerdefinierten Datentyp in VBA zu definieren, beginnen wir mit Type Keyword. Dann schreiben wir den Namen unseres benutzerdefinierten Datentyps. Es ist üblich, T vor dem Namen des Datentyps zu verwenden, damit Sie zwischen „VBA-Sammlungen“ und UDTs unterscheiden können . Die Datentypen können alles sein. Und Integer, String, Variant, eine andere UDT, Arrays, Sammlungen, alles.

Um Ihr UDT im Programm zu verwenden, deklarieren Sie seine Variable wie jede andere 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

Einfach. Um nun die Variablen in diesem UDT zu verwenden, verwenden wir den Punktoperator.

Verwenden Sie den Namen des Datentyps, gefolgt von einem Punkt und dem Namen der Variablen.

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

Genug der Theorie, lassen Sie uns in ein Beispiel springen, um zu sehen, wie es funktioniert.

Erstellen einer Schülervariablen, in der Informationen zu Schülern gespeichert werden Wir haben also die Aufgabe, einen benutzerdefinierten Datentyp zu erstellen, in dem Informationen zu Schülern gespeichert werden.

Ein Schüler hat einen Vornamen, Nachnamen, Rollennummer, Geburtsdatum, Klasse, Abschnitt, Fächer.

Also lasst es uns schaffen.

'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

Wenn Sie das obige Sub ausführen, wird das Ergebnis wie folgt gedruckt:

Manish

Singh

12334

10

A

physics

Math

image

Erstellen eines Arrays von UDTs und Zugreifen auf Elemente

Ebenso können Sie beliebig viele Variablen vom Typ Tstudent erstellen.

Sie können sogar wie jeder andere Datentyp ein Array vom Typ Tstudent erstellen.

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

Wenn Sie diesen Code ausführen, wird dieser im unmittelbaren Fenster gedruckt.

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

Im obigen Code wurde zuerst die UDT-Struktur und dann das Sub definiert (ich werde später erklären, warum). Wir haben gerade ein Array mit einem Schlüsselwort dim erstellt, wie wir es für jede Variable in VBA tun. Dann haben wir Redim verwendet, um die Größe von Arrays zu definieren. Danach verwenden wir eine for-Schleife, um das Array zu initialisieren.

Um auf die Elemente der Struktur zuzugreifen, verwenden wir eine andere for-Schleife. Das ist es.

Warum haben wir UDT über dem Modul deklariert?

Wenn wir eine UDT zuerst in einem Modul außerhalb einer Unterroutine oder Funktion deklarieren, steht sie allen Modulen in der Arbeitsmappe zur Verfügung. Wenn Sie hundert Subs und Funktionen in einem Modul haben, können alle Variablen vom Typ Student in ihrem Körper deklarieren. Wenn das UDT nicht privat ist, steht es allen Modulen in der Arbeitsmappe zur Verfügung. Wenn eine Struktur (UDT) nur für ein enthaltenes Modul verfügbar sein soll, deklarieren Sie sie als privat.

Private Type Tstudent

fName As String

lName As String

rNo As Integer

clss As Integer

section As String

subjects() As String

End Type

Sie können UDT nicht auf prozeduraler Ebene haben. Dies bedeutet, dass Sie keinen benutzerdefinierten Datentyp innerhalb einer Unterroutine oder Funktion definieren können.

Verschachtelte benutzerdefinierte Typen Angenommen, Sie haben UDT als Auto bezeichnet. Auto hat seine eigenen Elemente. Ebenso haben Sie ein UDT namens Fahrrad, das seine eigenen Eigenschaften haben kann.

Angenommen, Sie benötigen einen Datentyp namens Fahrzeug. Das Fahrzeug kann ein Auto und ein Fahrrad als Elemente haben. Können wir das machen? Ja, das können wir. Siehe den folgenden Code

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

Hier haben wir drei benutzerdefinierte Datentypen definiert. Erstens ist Tcar, das einige Informationen zu Autos enthält. Zweitens ist Fahrrad, es enthält auch einige Informationen über Fahrrad.

Das dritte UDT ist Tvehicle. Es enthält eine Variable zum Speichern der Anzahl der Fahrzeuge und zwei Variablen vom Typ Tcar und Tbike.

Private Type Tvehicle

Anzahl_der_Fahrzeuge als Ganzzahl

Fahrrad als Tbike

Auto Als Tcar

End Type

Um auf Variablen von Tcar und Tbike zuzugreifen, können wir den Datentyp Tvehicle verwenden. Im Sub haben wir nur eine Variable vom Typ Tvehicle als myVehicles definiert. Wenn wir diese Variable erstellen, erstellt VBA auch Variablen von Tcar und Tbike.

Um Variablen von Tcar und Tcar zu initialisieren und darauf zuzugreifen, können wir die Variable myVehicle verwenden. Wie Sie im Code sehen können.

myVehicles.number_of_Vehicle = 2

myVehicles.bike.seats = 1

myVehicles.bike.typ = „Racing“

myVehicles.car.seats = „4“

myVehicles.car.ac = True

Wenn wir das Sub ausführen, tritt dieses Ergebnis auf.

image

Diese Funktion erhöht die Programmierleistung von VBA erheblich. Sie können Ihren Datentyp wie reale Entitäten strukturieren. Sie können Beziehungen zwischen Datentypen erstellen, die in einem großen Projekt hilfreich sein können.

Also ja Leute, so können Sie einen benutzerdefinierten Datentyp oder eine benutzerdefinierte Struktur in VBA erstellen und verwenden. Ich hoffe ich konnte es erklären. Wenn Sie Fragen zu diesem Artikel oder zu anderen VBA-Fragen haben, wenden Sie sich an mich im Kommentarbereich unten. Ich werde mich sehr freuen, von Ihnen zu hören.

Verwandte Artikel:

link: / allgemeine-themen-in-vba-vba-variablen-in-excel [VBA-Variablen in Excel] | * VBA steht für Visual Basic für Applikationen.

Es ist eine Programmiersprache von Microsoft. Es wird mit Microsoft Office-Anwendungen wie MSExcel, MS-Word und MS-Access verwendet, während VBA-Variablen bestimmte Schlüsselwörter sind.

link: / allgemeine-themen-in-vba-excel-vba-variablenbereich [Excel VBA-Variablenbereich] | * In allen Programmiersprachen haben wir Variablenzugriffsspezifizierer, die definieren, von wo aus auf eine definierte Variable zugegriffen werden kann. Excel VBA ist keine Ausnahme. Auch VBA verfügt über Bereichsspezifizierer.

link: / Zellenbereiche-Zeilen-und-Spalten-in-vba-was-ist-der-Unterschied-zwischen-byref-und-byval-Argumenten-vba-Interview-Frage [ByRef- und ByVal-Argumente] | Wenn ein Argument als ByRef-Argument an ein anderes Sub oder eine andere Funktion übergeben wird, wird die Referenz der tatsächlichen Variablen gesendet. Alle Änderungen, die an der Kopie der Variablen vorgenommen werden, werden im ursprünglichen Argument wiedergegeben.

link: / files-arbeitsmappe-und-arbeitsblätter-in-vba-lösche-blätter-ohne-bestätigungs-aufforderungen-mit-vba-in-microsoft-excel [lösche blätter ohne bestätigungs-aufforderungen mit VBA in Microsoft Excel] | Da Sie Blätter mit VBA löschen, wissen Sie, was Sie tun.

Sie möchten Excel anweisen, diese Warnung nicht anzuzeigen und das verdammte Blatt zu löschen.

link: / files-workbook-and-worksheets-in-vba-add-and-save-new-workbook-using-vba-in-microsoft-excel [Neue Arbeitsmappe mit VBA in Microsoft Excel 2016 hinzufügen und speichern] | In diesem Code haben wir zuerst einen Verweis auf ein Arbeitsmappenobjekt erstellt. Und dann haben wir es mit einem neuen Arbeitsmappenobjekt initialisiert. Der Vorteil dieses Ansatzes besteht darin, dass Sie Operationen an dieser neuen Arbeitsmappe problemlos ausführen können. Wie Speichern, Schließen, Löschen usw. `link: / menüs-Symbolleisten-Statusleiste-in-vba-Anzeige-einer-Nachricht-in-der-Statusleiste-mit-vba-in-Microsoft-Excel [Anzeige einer Nachricht ein Die Excel VBA-Statusleiste *] `| Die Statusleiste in Excel kann als Codemonitor verwendet werden. Wenn Ihr VBA-Code lang ist und Sie mehrere Aufgaben mit VBA ausführen, deaktivieren Sie häufig die Bildschirmaktualisierung, damit dieser Bildschirm nicht flackert.

link: / allgemeine-themen-in-vba-ausschalten-warnwarnmeldungen-mit-vba-in-microsoft-excel [Warnmeldungen mit VBA in Microsoft Excel 2016 ausschalten] | * Dieser Code deaktiviert nicht nur VBA Warnungen, erhöht aber auch die Zeiteffizienz des Codes. Mal sehen, wie.

Beliebte Artikel:

link: / Tastatur-Formel-Verknüpfungen-50-Excel-Verknüpfungen-zur-Steigerung-Ihrer-Produktivität [50 Excel-Verknüpfungen zur Steigerung Ihrer Produktivität] | Werden Sie schneller bei Ihrer Aufgabe. Mit diesen 50 Verknüpfungen können Sie noch schneller in Excel arbeiten.

link: / formeln-und-funktionen-einführung-der-vlookup-funktion [Die VLOOKUP-Funktion in Excel] | Dies ist eine der am häufigsten verwendeten und beliebtesten Funktionen von Excel, mit der Werte aus verschiedenen Bereichen und Tabellen gesucht werden. link: / tips-countif-in-microsoft-excel [COUNTIF in Excel 2016] | Zählen Sie Werte mit Bedingungen, die diese erstaunliche Funktion verwenden. Sie müssen Ihre Daten nicht filtern, um bestimmte Werte zu zählen.

Die Countif-Funktion ist wichtig, um Ihr Dashboard vorzubereiten.

link: / excel-formel-und-funktion-excel-sumif-funktion [Verwendung der SUMIF-Funktion in Excel] | Dies ist eine weitere wichtige Funktion des Dashboards. Auf diese Weise können Sie Werte unter bestimmten Bedingungen zusammenfassen.