Hoe structuren te gebruiken in VBA? De door de gebruiker gedefinieerde gegevenstypen

Inhoudsopgave:

Anonim

Stel dat u een schoolbeheersysteem probeert te maken. Hier heb je verschillende soorten variabelen, zoals de naam van de student, het nummer van de student, de klas, enz. Een school heeft ook leraren, dus er zijn lerarennamen, het onderwerp van de leraar, klassen, enz. Op dezelfde manier zullen er veel andere objecten zijn, zoals , bibliothecaris, klassen, principe enz. Het is nu een rommeltje om voor elke entiteit op school verschillende variabelen te hebben. Wat dacht u van het maken van een gegevenstype van leerling, leraar, klassen, enz. waarin waarden worden opgeslagen die aan hen zijn gerelateerd. Hiervoor kunnen we gedefinieerde datatypes van VBA gebruiken.

In dit artikel leren we hoe u uw eigen gegevenstype in VBA kunt maken. Ze worden UDT's van VBA genoemd.

Een door de gebruiker gedefinieerd gegevenstype definiëren

Om een ​​structuur of UDT's in VBA te definiëren, gebruiken we Type___End Type-blok. Hier is de syntaxis van een UDT.

Typ Tname_Of_Data_Type var1 als datatype 'datatype kan van alles zijn, int, array of zelfs UDT var2 als datatype Var3() als datatype --- VarN() als datatype End Type 

Dus om een ​​aangepast gegevenstype in VBA te definiëren, beginnen we met Type Trefwoord. Vervolgens schrijven we de naam van ons aangepaste gegevenstype. Het is gebruikelijk om T voor de naam van het gegevenstype te gebruiken, zodat u onderscheid kunt maken tussen vba-verzamelingen en UDT's.

De DataTypes kunnen van alles zijn. En Integer, String, Variant, nog een UDT, Arrays, verzamelingen, alles.

Om uw UDT in het programma te gebruiken, declareert u zijn variabele zoals elke andere variabele.

Sub UseUDT 'Declareren van variabele van door de gebruiker gedefinieerd datatype Dim myVar1 as Tname_Of_Data_Type Dim myVar2 as Tname_Of_Data_Type End Sub 

Eenvoudig. Om nu de variabelen binnen deze UDT te gebruiken, gebruiken we de puntoperator. Gebruik de naam van het gegevenstype gevolgd door een punt en de naam van de variabele erin.

Sub UseUDT 'Declareren van variabele van door de gebruiker gedefinieerd datatype Dim myVar1 as Tname_Of_Data_Type Dim myVar2 as Tname_Of_Data_Type myVar1.var1="Abcd" myVar2.Var2="xyvz" End Sub 

Genoeg van de theorie, laten we naar een voorbeeld springen om te zien hoe het werkt.

Maak een leerlingvariabele die informatie over de leerling opslaat

We hebben dus de taak om een ​​door de gebruiker gedefinieerd gegevenstype te maken dat informatie over studenten opslaat.

Een leerling heeft een voornaam, achternaam, rolnummer, geboortedatum, klas, sectie, vakken.

Dus laten we het creëren.

'Een openbaar leerlinggegevenstype gemaakt Openbaar type Tstudent fName As String 'Voor voornaam lName As String 'For Last Name rNo As Integer 'For Roll Number clss As string 'For Class section As String 'For Section Name subjecten() As String ' Voor Onderwerpen van student End Type 'Gebruik dit Tstudent type in subroutine Sub StudentsInfo() 'Creëren en initialiseren student type variabele 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) = "natuurkunde" student1.subjects(1) = "Wiskunde" 'Afdrukken leerlinggegevens. 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 

Wanneer u de bovenstaande sub uitvoert, wordt het resultaat afgedrukt zoals hieronder weergegeven:

Manish

Singh

12334

10

EEN

natuurkunde

Wiskunde

Een array van UDT's maken en toegang krijgen tot elementen

Op dezelfde manier kun je zoveel variabelen van het Tstudent-type maken als je nodig hebt. U kunt zelfs een array van het Tstudent-type maken, net als elk ander gegevenstype.

Publiek Type Tstudent fName As String 'Voor Voornaam lName As String 'Voor Achternaam rNo As Integer 'Voor Roll Number clss As string 'Voor Class section As String 'For Section Name subjecten() As String 'For Subjects of student End Type' Het creëren van een array van Tstudenten 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) studenten(i).rNo = i + 1 Volgende i Debug.Print ("Name : Roll No") For i = 0 To 9 Debug.Print (students(i).fName & ":" & students( i).rNee) Volgende i Einde Sub 

Wanneer u deze code uitvoert, wordt deze in het directe venster afgedrukt.

Naam: rol nr

naam 1 : 1

naam 2 : 2

naam 3 : 3

naam 4 : 4

naam 5 : 5

naam 6 : 6

naam 7 : 7

naam 8 : 8

naam 9 : 9

naam 10 : 10

In de bovenstaande code definieerde eerst de UDT-structuur vóór en de sub (ik zal later uitleggen waarom). We hebben zojuist een array gemaakt met een zwak trefwoord zoals we doen voor elke variabele in VBA.

Vervolgens hebben we Redim gebruikt om de grootte van arrays te definiëren. Daarna gebruiken we een for-lus om de array te initialiseren.

Om toegang te krijgen tot de elementen van de structuur gebruiken we een andere for-lus. Dat is het.

Waarom hebben we UDT bovenaan de module verklaard?

Als we eerst een UDT declareren in een module, buiten een subroutine of functie, is deze beschikbaar voor alle modules in de werkmap. Het betekent dat als je honderd subs en functies in een module hebt, ze allemaal Student-typevariabelen in hun lichaam kunnen declareren.

Als de UDT niet privé is, is deze beschikbaar voor alle modules in de werkmap. Als u wilt dat een structuur (UDT) alleen beschikbaar is voor een bevattende module, declareert u deze als privé.

Privé Type Tstudent fName As String lName As String rNo As Integer clss As Integer section As String subject() As String End Type 

U kunt geen UDT hebben op procedureel niveau. Het betekent dat u geen door de gebruiker gedefinieerd gegevenstype kunt definiëren binnen een subroutine of functie.

Geneste door de gebruiker gedefinieerde typen

Laten we zeggen dat UDT een auto heeft genoemd. Auto heeft zijn eigen elementen. Evenzo heb je een UDT, een fiets genaamd, die zijn eigen eigenschappen kan hebben.

Stel nu dat u een gegevenstype met de naam voertuig nodig heeft. Voertuig kan een auto en een fiets als zijn elementen hebben. Kunnen we dit doen? Ja, we kunnen dit. Zie de onderstaande code:

Privé Type Tcar-stoelen As Integer ac As Boolean typ As String-kleur As String-fabrikant As String Dop As Date rc_no As String End Type Private Type Tbike-stoelen As Integer typ As String-kleur As String-fabrikant As String Dop As Datum rc_no As String End Type Private Type Tvehicle number_of_Vehicle As Integer bike As Tbike auto As Tcar End Type Sub vehicleVarification() Dim myVehicles As Tvehicle myVehicles.number_of_Vehicle = 2 myVehicles.bike.seats = 1 myVehicles.bike.type = "Racing" myVehicles = "4.seats" " myVehicles.car.ac = True Debug.Print myVehicles.number_of_Vehicle Debug.Print myVehicles.bike.typ Debug.Print myVehicles.car.ac End Sub 

Hier hebben we drie door de gebruiker gedefinieerde gegevenstypen gedefinieerd. De eerste is Tcar die wat informatie bevat met betrekking tot auto's. Ten tweede is fiets, het bevat ook wat informatie over de fiets.

De derde UDT is Tvehicle. Het bevat één variabele om het aantal voertuigen op te slaan en twee variabelen van het type Tcar en Tbike.

Privé Type Tvoertuig

number_of_Vehicle Als geheel getal

fiets als Tbike

auto als Tcar

Eindtype

Om toegang te krijgen tot variabelen van Tcar en Tbike kunnen we het gegevenstype Tvehicle gebruiken. In de sub hebben we slechts één variabele van het type Tvehicle gedefinieerd als myVehicles. Wanneer we deze variabele maken, maakt VBA ook variabelen van Tcar en Tbike.

Om variabelen van Tcar en Tcar te initialiseren en toegang te krijgen, kunnen we de myVehicle-variabele gebruiken. Zoals je kunt zien in de code.

myVehicles.number_of_Vehicle = 2

myVehicles.bike.seats = 1

myVehicles.bike.typ = "Racen"

myVehicles.car.seats = "4"

myVehicles.car.ac = True

Wanneer we de sub uitvoeren, is dit het resultaat.

Deze functie vergroot echt de kracht van het programmeren van VBA exponentieel. U kunt uw gegevenstype structureren zoals entiteiten in de echte wereld. U kunt relaties tussen gegevenstypen maken, wat handig kan zijn in een groot project.

Dus ja jongens, dit is hoe je een door de gebruiker gedefinieerd gegevenstype of -structuur in VBA kunt maken en gebruiken. Ik hoop dat ik het heb kunnen uitleggen. Als je vragen hebt over dit artikel of andere VBA-gerelateerde vragen, stel ze dan in de comments hieronder. Ik hoor graag van je.

VBA-variabelen in Excel| VBA staat voor Visual Basic for Applications. Het is een programmeertaal van Microsoft. Het wordt gebruikt met Microsoft Office-toepassingen zoals MSExcel, MS-Word en MS-Access, terwijl VBA-variabelen specifieke trefwoorden zijn.

Excel VBA-variabel bereik| In alle programmeertalen hebben we variabele toegangsspecificaties die definiëren van waaruit toegang tot een gedefinieerde variabele kan worden verkregen. Excel VBA is geen uitzondering. VBA heeft ook scope-specificaties.

ByRef en ByVal-argumenten | Wanneer een argument als ByRef-argument wordt doorgegeven aan een andere sub of functie, wordt de referentie van de werkelijke variabele verzonden. Alle wijzigingen die in de kopie van de variabele zijn aangebracht, worden weerspiegeld in het oorspronkelijke argument.

Bladen verwijderen zonder bevestigingsvragen met VBA in Microsoft Excel | Aangezien u bladen verwijdert met VBA, weet u wat u doet. U wilt Excel vertellen deze waarschuwing niet te tonen en dat verdomde blad te verwijderen.

Nieuwe werkmap toevoegen en opslaan met VBA in Microsoft Excel 2016| In deze code hebben we eerst een verwijzing naar een werkmapobject gemaakt. En toen hebben we het geïnitialiseerd met een nieuw werkmapobject. Het voordeel van deze aanpak is dat u eenvoudig bewerkingen op deze nieuwe werkmap kunt uitvoeren. Zoals opslaan, sluiten, verwijderen, etc

Geef een bericht weer op de Excel VBA-statusbalk| De statusbalk in Excel kan worden gebruikt als codemonitor. Wanneer uw VBA-code lang is en u verschillende taken uitvoert met VBA, schakelt u vaak de schermupdate uit zodat u dat scherm niet ziet flikkeren.

Schakel waarschuwingsberichten uit met VBA in Microsoft Excel 2016| Deze code schakelt niet alleen VBA-waarschuwingen uit, maar verhoogt ook de tijdefficiëntie van de code. Laten we eens kijken hoe.

Populaire artikels:

50 Excel-snelkoppelingen om uw productiviteit te verhogen | Word sneller in uw taak. Met deze 50 sneltoetsen werk je nog sneller in Excel.

De VERT.ZOEKEN-functie in Excel | Dit is een van de meest gebruikte en populaire functies van Excel die wordt gebruikt om waarde op te zoeken uit verschillende bereiken en bladen.

AANTAL.ALS in Excel 2016 | Tel waarden met voorwaarden met behulp van deze geweldige functie. U hoeft uw gegevens niet te filteren om specifieke waarden te tellen. Countif-functie is essentieel om uw dashboard voor te bereiden.

Hoe de SUMIF-functie in Excel te gebruiken? | Dit is een andere essentiële functie van het dashboard. Dit helpt u bij het optellen van waarden voor specifieke voorwaarden.