Sådan bruges strukturer i VBA? De brugerdefinerede datatyper

Indholdsfortegnelse:

Anonim

Lad os sige, at du prøver at oprette et skoleledelsessystem. Her vil du have forskellige typer variabler som elevnavn, elevrulle nr, klasse osv. En skole har også lærere, så der vil være lærernavne, lærerfag, klasser osv. På samme måde vil der være mange andre objekter som , bibliotekar, klasser, principper osv. Nu vil det være rodet at have forskellige variabler for hver enhed i skolen. Hvad med at oprette en datatype af elev, lærer, klasser osv., Der gemmer værdier relateret til dem. Til dette kan vi bruge definerede datatyper af VBA.

I denne artikel lærer vi, hvordan du kan oprette din egen datatype i VBA. De omtales som UDT'er for VBA.

Definere en brugerdefineret datatype

For at definere en struktur eller UDT'er i VBA bruger vi Type___End Type -blok. Her er syntaksen for en UDT.

Skriv Tname_Of_Data_Type var1 som datatype 'datatype kan være alt, int, array eller endda UDT var2 som datatype Var3 () som datatype --- VarN () som datatype End Type 

Så for at definere en brugerdefineret datatype i VBA starter vi med Type Keyword. Derefter skriver vi navnet på vores brugerdefinerede datatype. Det er en konvention at bruge T før navnet på datatype, så du kan skelne mellem vba -samlinger og UDT'er.

Datatyperne kan være alt. Og heltal, streng, variant, endnu en UDT, arrays, samlinger, hvad som helst.

For at bruge din UDT i programmet erklærer du dens variabel som enhver anden variabel.

UnderanvendelseUDT 'Deklarationsvariabel for brugerdefineret datatype Dim myVar1 som Tname_Of_Data_Type Dim myVar2 som Tname_Of_Data_Type End Sub 

Enkel. For at bruge variablerne inden for denne UDT bruger vi punktoperator. Brug navnet på datatypen efterfulgt af en prik og navnet på variablen inden for.

Sub UseUDT 'Deklarerende variabel for brugerdefineret datatype Dim myVar1 som Tname_Of_Data_Type Dim myVar2 som Tname_Of_Data_Type myVar1.var1 = "Abcd" myVar2.Var2 = "xyvz" End Sub 

Nok med teorien, lad os springe ind i et eksempel for at se, hvordan det fungerer.

Opret en elevvariabel, der gemmer oplysninger relateret til studerende

Så vi har en opgave at oprette en brugerdefineret datatype, der gemmer oplysninger relateret til elever.

En elev har et fornavn, efternavn, rollenummer, fødselsdato, klasse, sektion, emner.

Så lad os oprette det.

'Oprettede en offentlig elevdatatype Offentlig type Tstudent fName Som streng' For fornavn lName Som streng 'For efternavn rNo som heltal' For rulletal clss Som streng 'For klasseafsnit som streng' For sektionsnavnemner () som streng ' For emner af elev Sluttype 'Brug denne Tstudent -type i underprogram Sub StudentsInfo ()' Oprettelse og initialisering af elevtypevariabel Dim student1 Som 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" 'Udskrivning af elevoplysninger. 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 

Når du kører ovenstående sub, udskrives resultatet som vist herunder:

Manish

Singh

12334

10

EN

fysik

Matematik

Oprettelse af en række UDT'er og adgang til elementer

På samme måde kan du oprette så mange som variabler af Tstudent -typen, du har brug for. Du kan endda oprette en matrix af Tstudent -type ligesom enhver anden datatype.

Public Type Tstudent fName As String 'For First Name lName As String' For Efternavn 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 ' Oprettelse af arrays af Tstudenter type Sub SchoolInfo () Dim schoolName Som String Dim elever () Som Tstudent schoolName = "Seniorskole" ReDim -elever (10) For i = 0 Til 9 elever (i) .fName = "name" & Str ( i + 1) elever (i) .rNo = i + 1 Næste i Debug.Print ("Navn: Roll No") For i = 0 Til 9 Debug.Print (students (i) .fName & ":" & students ( i) .rNo) Næste i Afslut Sub 

Når du kører denne kode, udskrives denne i det umiddelbare vindue.

Navn: Rulle nr

navn 1: 1

navn 2: 2

navn 3: 3

navn 4: 4

navn 5: 5

navn 6: 6

navn 7: 7

navn 8: 8

navn 9: 9

navn 10: 10

I ovenstående kode definerede du først UDT -struktur før og sub (jeg forklarer senere hvorfor). Vi har lige oprettet et array ved hjælp af et svagt søgeord, som vi gør for enhver variabel i VBA.

Derefter brugte vi Redim til at definere størrelsen på arrays. Bagefter bruger vi en for loop til at initialisere arrayet.

For at få adgang til strukturens elementer bruger vi en anden til loop. Det er det.

Hvorfor erklærede vi UDT oven på modulet?

Hvis vi først erklærer en UDT i et modul uden for enhver underprogram eller funktion, er den tilgængelig for alle modulerne i projektmappen. Det betyder, at hvis du har hundrede subs og funktioner i et modul, kan de alle erklære elevtypevariabler i deres krop.

Hvis UDT ikke er privat, vil det være tilgængeligt for alle modulerne i projektmappen. Hvis du ønsker, at en struktur (UDT) kun er tilgængelig for et modul, der indeholder, skal du erklære den for privat.

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

Du kan ikke have UDT på et proceduremæssigt niveau. Det betyder, at du ikke kan definere en brugerdefineret datatype inde i en underprogram eller funktion.

Indlejrede brugerdefinerede typer

Lad os sige, at du har ringet UDT til en bil. Bilen har sine egne elementer. Tilsvarende har du en UDT kaldet en cykel, der kan have sine egne egenskaber.

Lad os nu sige, at du har brug for en datatype kaldet køretøj. Køretøj kan have en bil og cykel som sine elementer. Kan vi gøre dette? Ja vi kan dette. Se nedenstående kode

Privat Type Tcar -sæder Som heltal ac Som boolsk typ Som strengfarve Som strengproducent Som strengdop som dato rc_no Som strengendetype Privat type Tbike -sæder Som heltalstype Som strengfarve Som strengproducent Som strengdop som dato rc_no Som strengendetype Privat Type Køretøjsnummer_af_Køretøj Som Heltalcykel Som Tcykelbil Som Tcar -ende Type UndervognVarification () 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 

Her har vi defineret tre brugerdefinerede datatype. Først er Tcar, der indeholder nogle oplysninger om biler. For det andet er cykel, den indeholder også nogle oplysninger om cykel.

Den tredje UDT er Tvehicle. Den indeholder en variabel til lagring af køretøjer og to variabler af typen Tcar og Tbike.

Privat type køretøj

number_of_Vehicle As Integer

cykel Som Tbike

bil Som Tcar

Afslutningstype

For at få adgang til variabler af Tcar og Tbike kan vi bruge køretøjets datatype. I sub har vi kun defineret en variabel af køretøjstypen som myVehicles. Når vi opretter denne variabel, opretter VBA også variabler af Tcar og Tbike.

For at initialisere og få adgang til variabler af Tcar og Tcar kan vi bruge myVehicle -variablen. Som du kan se i koden.

myVehicles.number_of_Vehicle = 2

myVehicles.bike.seats = 1

myVehicles.bike.typ = "Racing"

myVehicles.car.seats = "4"

myVehicles.car.ac = Sandt

Når vi kører sub, opstår dette resultat.

Denne funktion øger virkelig kraften i programmering af VBA eksponentielt. Du kan strukturere din datatype som virkelige enheder. Du kan oprette relationer mellem datatyper, som kan være nyttige i et stort projekt.

Så ja fyre, sådan kan du oprette og bruge en brugerdefineret datatype eller struktur i VBA. Jeg håber, at jeg var i stand til at forklare det. Hvis du har spørgsmål vedrørende denne artikel eller andre VBA -relaterede spørgsmål, så spørg mig i kommentarfeltet herunder. Jeg bliver rigtig glad for at høre fra dig.

VBA -variabler i Excel| VBA står for Visual Basic for Applications. Det er et programmeringssprog fra Microsoft. Det bruges med Microsoft Office-applikationer som MSExcel, MS-Word og MS-Access, hvorimod VBA-variabler er specifikke søgeord.

Excel VBA variabelt omfang| På alle programmeringssprog har vi variabeladgangsspecifikatorer, der definerer, hvorfra der kan tilgås en defineret variabel. Excel VBA er ingen undtagelse. VBA har også omfangsspecifikationer.

ByRef og ByVal argumenter | Når et argument sendes som et ByRef -argument til en anden sub eller funktion, sendes referencen til den faktiske variabel. Eventuelle ændringer, der foretages i kopien af ​​variablen, vil afspejle sig i det originale argument.

Slet ark uden bekræftelsesmeddelelser ved hjælp af VBA i Microsoft Excel | Da du sletter ark ved hjælp af VBA, ved du, hvad du laver. Du vil gerne bede Excel om ikke at vise denne advarsel og slette det forbandede ark.

Tilføj og gem ny arbejdsmappe ved hjælp af VBA i Microsoft Excel 2016| I denne kode oprettede vi først en reference til et projektmappeobjekt. Og så initialiserede vi det med et nyt projektmappeobjekt. Fordelen ved denne tilgang er, at du nemt kan udføre operationer på denne nye projektmappe. Som at gemme, lukke, slette osv

Vis en meddelelse på Excel VBA -statuslinjen| Statuslinjen i excel kan bruges som kodeovervågning. Når din VBA -kode er lang, og du udfører flere opgaver ved hjælp af VBA, deaktiverer du ofte skærmopdateringen, så du ikke kan se, at skærmen flimrer.

Slå advarselsmeddelelser fra ved hjælp af VBA i Microsoft Excel 2016| Denne kode deaktiverer ikke kun VBA -advarsler, men øger også kodeens tidseffektivitet. Lad os se hvordan.

Populære artikler:

50 Excel -genveje til at øge din produktivitet | Få hurtigere til din opgave. Disse 50 genveje får dig til at arbejde endnu hurtigere i Excel.

VLOOKUP -funktionen i Excel | Dette er en af ​​de mest anvendte og populære funktioner i excel, der bruges til at slå værdi op fra forskellige områder og ark.

COUNTIF i Excel 2016 | Tæl værdier med betingelser ved hjælp af denne fantastiske funktion. Du behøver ikke at filtrere dine data for at tælle bestemte værdier. Countif -funktion er afgørende for at forberede dit dashboard.

Sådan bruges SUMIF -funktionen i Excel | Dette er endnu en vigtig instrumentbrætfunktion. Dette hjælper dig med at opsummere værdier på bestemte betingelser.