Hvordan bruke strukturer i VBA? De brukerdefinerte datatypene

Innholdsfortegnelse:

Anonim

La oss si at du prøver å lage et skoleledelsessystem. Her vil du ha forskjellige typer variabler som elevnavn, elevrulle nr, klasse osv. En skole har også lærere, så det vil være lærernavn, lærerfag, klasser osv. På samme måte vil det være mange andre objekter som , bibliotekar, klasser, prinsipper etc. Nå vil det være rotete arbeid å ha forskjellige variabler for hver enhet på skolen. Hva med å lage en datatype for studenter, lærere, klasser osv. Som lagrer verdier knyttet til dem. For dette kan vi bruke definerte datatyper for VBA.

I denne artikkelen lærer vi hvordan du kan lage din egen datatype i VBA. De blir referert til som UDTs for VBA.

Definere en brukerdefinert datatype

For å definere en struktur eller UDT -er i VBA bruker vi Type___End Type -blokk. Her er syntaksen til en UDT.

Skriv Tname_Of_Data_Type var1 som datatype 'datatype kan være hva som helst, int, array, eller til og med UDT var2 som datatype Var3 () som datatype --- VarN () som datatype Sluttype 

Så for å definere en tilpasset datatype i VBA starter vi med Type Keyword. Deretter skriver vi navnet på vår tilpassede datatype. Det er en konvensjon å bruke T før navnet på datatype, slik at du kan skille mellom vba -samlinger og UDT -er.

Datatypene kan være hva som helst. Og heltall, streng, variant, en annen UDT, matriser, samlinger, hva som helst.

For å bruke UDT i programmet, erklær variabelen som alle andre variabler.

Sub UseUDT 'Erklæringsvariabel for brukerdefinert datatype Dim myVar1 som Tname_Of_Data_Type Dim myVar2 som Tname_Of_Data_Type End Sub 

Enkel. For å bruke variablene i denne UDT bruker vi punktoperator. Bruk navnet på datatypen etterfulgt av en prikk og navnet på variabelen i.

Sub UseUDT 'Erklæringsvariabel for brukerdefinert datatype Dim myVar1 som Tname_Of_Data_Type Dim myVar2 som Tname_Of_Data_Type myVar1.var1 = "Abcd" myVar2.Var2 = "xyvz" End Sub 

Nok av teorien, la oss hoppe inn i et eksempel for å se hvordan det fungerer.

Lag en elevvariabel som lagrer informasjon relatert til student

Så vi har en oppgave å lage en brukerdefinert datatype som lagrer informasjon relatert til studenter.

En elev har fornavn, etternavn, rullnummer, fødselsdato, klasse, seksjon, fag.

Så la oss lage det.

'Opprettet en offentlig studentdatatype Offentlig type Tstudent fName As String' For Fornavn lName Som String 'For Etternavn rNo Som Heltall' For Roll Number clss Som streng 'For Class section As String' For Section Name subjects () As String ' For emner for student Sluttype 'Bruk denne Tstudent -typen i subrutine Sub StudentsInfo ()' Opprette og initialisere variabel for studenttype 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 

Når du kjører suben ovenfor, skrives resultatet ut som vist nedenfor:

Manish

Singh

12334

10

EN

fysikk

Matte

Opprette en rekke UDT -er og få tilgang til elementer

På samme måte kan du opprette så mange variabler av typen Tstudent du trenger. Du kan til og med lage en rekke Tstudent -typer som alle andre datatyper.

Offentlig 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 ' Opprette en matrise av Tstudents -typen 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) studenter (i) .rNo = i + 1 Neste i Debug.Print ("Name: Roll No") For i = 0 To 9 Debug.Print (students (i) .fName & ":" & students ( i) .rNo) Neste i End Sub 

Når du kjører denne koden, skrives denne ut i det umiddelbare vinduet.

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 koden ovenfor definerte du først UDT -strukturen før og suben (jeg forklarer senere hvorfor). Vi har nettopp opprettet en matrise ved å bruke et svakt søkeord som vi gjør for en hvilken som helst variabel i VBA.

Deretter brukte vi Redim til å definere størrelsen på matriser. Etterpå bruker vi en for loop for å initialisere matrisen.

For å få tilgang til strukturens elementer bruker vi en annen for loop. Det er det.

Hvorfor erklærte vi UDT på toppen av modulen?

Hvis vi først erklærer en UDT i en modul, utenom noen underprogram eller funksjon, er den tilgjengelig for alle modulene i arbeidsboken. Det betyr at hvis du har hundre subs og funksjoner i en modul, kan alle deklarere variabler for studenttype i kroppen.

Hvis UDT ikke er privat, vil den være tilgjengelig for alle modulene i arbeidsboken. Hvis du vil at en struktur (UDT) bare skal være tilgjengelig for en modul som inneholder, må 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 ha UDT på et prosessuelt nivå. Det betyr at du ikke kan definere en brukerdefinert datatype inne i en underprogram eller funksjon.

Nestede brukerdefinerte typer

La oss si at du har kalt UDT en bil. Bilen har sine egne elementer. På samme måte har du en UDT kalt en sykkel som kan ha sine egne egenskaper.

La oss nå si at du trenger en datatype som kalles kjøretøy. Kjøretøy kan ha en bil og sykkel som element. Kan vi gjøre dette? Ja vi kan gjøre dette. Se koden nedenfor

Private Type Tcar -seter As Integer ac As Boolean typ As String color As Strengprodusent As String Dop As Date rc_no As String End Type Private Type Tbike seats As Integer typ As String color As String produsent As String Dop As Date rc_no As String End Type Private Type Kjøretøyets nummer_av_Kjøretøy Som Heltall sykkel Som Tykkelbil Som 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 

Her har vi definert tre brukerdefinerte datatyper. Først er Tcar som inneholder informasjon relatert til biler. For det andre er sykkel, den inneholder også litt informasjon om sykkel.

Den tredje UDT er Tvehicle. Den inneholder en variabel for å lagre antall kjøretøyer og to variabler av typen Tcar og Tbike.

Privat kjøretøy

number_of_Vehicle As Integer

sykkel As Tbike

bil Som Tcar

Sluttype

For å få tilgang til variabler av Tcar og Tbike kan vi bruke kjøretøydatatype. I suben har vi bare definert en variabel av kjøretøytype som myVehicles. Når vi lager denne variabelen, lager VBA også variabler av Tcar og Tbike.

For å initialisere og få tilgang til variabler av Tcar og Tcar, kan vi bruke myVehicle -variabelen. 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 = Sant

Når vi kjører suben, oppstår resultatet.

Denne funksjonen øker virkelig kraften til å programmere VBA eksponentielt. Du kan strukturere datatypen din som virkelige enheter. Du kan opprette relasjoner mellom datatyper som kan være nyttige i et stort prosjekt.

Så ja gutta, dette er hvordan du kan opprette og bruke en brukerdefinert datatype eller struktur i VBA. Jeg håper jeg klarte å forklare det. Hvis du har spørsmål angående denne artikkelen eller andre VBA -relaterte spørsmål, kan du stille meg i kommentarfeltet nedenfor. Jeg blir veldig glad for å høre fra deg.

VBA -variabler i Excel| VBA står for Visual Basic for Applications. Det er et programmeringsspråk fra Microsoft. Den brukes med Microsoft Office-applikasjoner som MSExcel, MS-Word og MS-Access, mens VBA-variabler er spesifikke søkeord.

Excel VBA variabelt omfang| På alle programmeringsspråk har vi variabel tilgangsspesifikatorer som definerer hvorfra en definert variabel kan nås. Excel VBA er ingen unntak. VBA har også omfangsspesifikatorer.

ByRef og ByVal -argumenter | Når et argument sendes som et ByRef -argument til en annen sub eller funksjon, sendes referansen til den faktiske variabelen. Eventuelle endringer som gjøres i kopien av variabelen, gjenspeiles i det opprinnelige argumentet.

Slett ark uten bekreftelsesforespørsler ved hjelp av VBA i Microsoft Excel | Siden du sletter ark med VBA, vet du hva du gjør. Du vil fortelle Excel om ikke å vise denne advarselen og slette det jævla arket.

Legg til og lagre ny arbeidsbok ved hjelp av VBA i Microsoft Excel 2016| I denne koden opprettet vi først en referanse til et arbeidsbokobjekt. Og så initialiserte vi det med et nytt arbeidsbokobjekt. Fordelen med denne tilnærmingen er at du enkelt kan utføre operasjoner på denne nye arbeidsboken. Som å lagre, lukke, slette osv

Vis en melding på Excel VBA -statuslinjen| Statuslinjen i excel kan brukes som en kodemonitor. Når VBA -koden din er lang og du gjør flere oppgaver med VBA, deaktiverer du ofte skjermoppdateringen slik at du ikke ser at skjermen flimrer.

Slå av advarselsmeldinger ved hjelp av VBA i Microsoft Excel 2016| Denne koden deaktiverer ikke bare VBA -varsler, men øker også tidens effektivitet av koden. La oss se hvordan.

Populære artikler:

50 Excel -snarveier for å øke produktiviteten | Bli raskere på oppgaven din. Disse 50 snarveiene får deg til å jobbe enda raskere med Excel.

VLOOKUP -funksjonen i Excel | Dette er en av de mest brukte og populære funksjonene til excel som brukes til å slå opp verdi fra forskjellige områder og ark.

COUNTIF i Excel 2016 | Tell verdier med betingelser ved hjelp av denne fantastiske funksjonen. Du trenger ikke å filtrere dataene dine for å telle spesifikke verdier. Countif -funksjonen er avgjørende for å forberede dashbordet.

Slik bruker du SUMIF -funksjonen i Excel | Dette er en annen viktig funksjon på dashbordet. Dette hjelper deg med å oppsummere verdier på spesifikke forhold.