Wie Strukturen in VBA verwenden? Die benutzerdefinierte Datentypen
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 |
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 |
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.
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.