Låt oss säga att du försöker skapa ett skolledningssystem. Här kommer du att ha olika typer av variabler som elevnamn, elevrulle nr, klass etc. En skola har också lärare, så det kommer att finnas lärarnamn, lärarämne, klasser etc. På samma sätt kommer det att finnas många andra objekt som , bibliotekarie, klasser, princip etc. Att ha olika variabler för varje enhet i skolan blir stökigt arbete. Vad sägs om att skapa en datatyp av elev, lärare, klasser, etc som lagrar värden relaterade till dem. För detta kan vi använda definierade datatyper för VBA.
I den här artikeln lär vi oss hur du kan skapa din egen datatyp i VBA. De kallas UDT för VBA.
Definiera en användardefinierad datatyp
För att definiera en struktur eller UDT i VBA använder vi typ___End typblock. Här är syntaxen för en UDT.
Skriv Tname_Of_Data_Type var1 som datatyp 'datatyp kan vara vad som helst, int, array eller till och med UDT var2 som datatyp Var3 () som datatyp --- VarN () som datatyp Sluttyp
Så för att definiera en anpassad datatyp i VBA börjar vi med Typ Keyword. Sedan skriver vi namnet på vår anpassade datatyp. Det är en konvention att använda T före namnet på datatyp så att du kan skilja mellan vba -samlingar och UDT: er.
Datatyperna kan vara vad som helst. Och heltal, sträng, variant, en annan UDT, matriser, samlingar, vad som helst.
För att använda din UDT i programmet, deklarera dess variabel som vilken annan variabel som helst.
UnderanvändningUDT 'Deklarerande variabel för användardefinierad datatyp Dim myVar1 som Tname_Of_Data_Type Dim myVar2 som Tname_Of_Data_Type End Sub
Enkel. För att använda variablerna inom denna UDT använder vi punktoperator. Använd namnet på datatypen följt av en prick och namnet på variabeln inom.
UnderanvändningUDT 'Deklarerande variabel för användardefinierad datatyp Dim myVar1 som Tname_Of_Data_Type Dim myVar2 som Tname_Of_Data_Type myVar1.var1 = "Abcd" myVar2.Var2 = "xyvz" Avsluta Sub
Nog om teorin, låt oss hoppa in i ett exempel för att se hur det fungerar.
Skapa en elevvariabel som lagrar information relaterad till student
Så vi har en uppgift att skapa en användardefinierad datatyp som lagrar information relaterad till studenter.
En elev har ett förnamn, efternamn, rollnummer, födelsedatum, klass, avsnitt, ämnen.
Så låt oss skapa det.
'Skapade en offentlig studentdatatyp Public Type Tstudent fName As String' For First Name lName As String 'For Efternamn rNo As Integer' For Roll Number clss As string 'For Class section As String' For Section Name subject () As String ' För ämnen för elevslutstyp 'Använd denna Tstudent -typ i subrutin Sub StudentsInfo ()' Skapa och initiera variabel för elevtyp 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" 'Skriv ut studentinformation. 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ör ovanstående del kommer resultatet att skrivas ut enligt nedan:
Manish
Singh 12334 10 A fysik Matematik |
Skapa en uppsättning UDT och få tillgång till element
På samma sätt kan du skapa så många variabler av Tstudent -typ som du behöver. Du kan till och med skapa en matris av Tstudent -typ som vilken annan datatyp som helst.
Public Type Tstudent fName As String 'For First Name lName As String' For Efternamn 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 ' Skapa en matris av Tstudenter typ 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 Nästa i Debug.Print ("Name: Roll No") För i = 0 To 9 Debug.Print (students (i) .fName & ":" & students ( i) .rNo) Nästa i Avsluta Sub
När du kör den här koden kommer den att skrivas ut i det omedelbara fönstret.
Namn: Rulle nr
namn 1: 1 namn 2: 2 namn 3: 3 namn 4: 4 namn 5: 5 namn 6: 6 namn 7: 7 namn 8: 8 namn 9: 9 namn 10: 10 |
I koden ovan definierades först UDT -strukturen före och suben (jag förklarar senare varför). Vi skapade precis en matris med ett dunkelt sökord som vi gör för alla variabler i VBA.
Sedan använde vi Redim för att definiera storleken på matriser. Efteråt använder vi en for loop för att initiera arrayen.
För att komma åt strukturens element använder vi en annan för loop. Nu räcker det.
Varför deklarerade vi UDT ovanpå modulen?
Om vi deklarerar en UDT först i en modul, utanför någon underprogram eller funktion, är den tillgänglig för alla moduler i arbetsboken. Det betyder att om du har hundra subs och funktioner i en modul kan alla deklarera elevtypvariabler i kroppen.
Om UDT inte är privat är det tillgängligt för alla moduler i arbetsboken. Om du vill att en struktur (UDT) endast ska vara tillgänglig för en innehållande modul, förklara den som privat.
Privat typ Tstudent fName Som sträng lName Som sträng rNo Som heltal clss Som heltal avsnitt Som strängämnen () Som strängavslutningstyp
Du kan inte ha UDT på procedurnivå. Det betyder att du inte kan definiera en användardefinierad datatyp inuti en underrutin eller funktion.
Kapslade användardefinierade typer
Låt oss säga att du har UDT ringt en bil. Bilen har sina egna element. På samma sätt har du en UDT som kallas en cykel som kan ha sina egna egenskaper.
Låt oss nu säga att du behöver en datatyp som kallas fordon. Fordon kan ha en bil och cykel som element. Kan vi göra det här? Ja vi kan göra det här. Se koden nedan
Privat typ Tcar -säten Som heltal ac Som Boolean typ Som strängfärg Som strängtillverkare Som strängdopp som datum rc_no Som strängändtyp Privat typ Tbike -säten Som heltalstyp Som strängfärg Som strängtillverkare Som strängdop som datum rc_no Som strängändtyp Privat Typ 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
Här har vi definierat tre användardefinierade datatyper. Först är Tcar som innehåller lite information relaterad till bilar. För det andra är cykel, den innehåller också lite information om cykel.
Den tredje UDT är Tvehicle. Den innehåller en variabel för att lagra antalet fordon och två variabler av typen Tcar och Tbike.
Privat typ av fordon
number_of_Vehicle As Integer
cykel som Tbike
bil Som Tcar
Slut typ
För att komma åt variabler av Tcar och Tbike kan vi använda fordonets datatyp. I suben har vi definierat endast en variabel av fordonstyp som myVehicles. När vi skapar denna variabel skapar VBA variabler för Tcar och Tbike också.
För att initialisera och komma åt variabler för Tcar och Tcar kan vi använda myVehicle -variabeln. 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 kör sub, uppstår detta hur resultatet uppstår.
Denna funktion ökar verkligen kraften i att programmera VBA exponentiellt. Du kan strukturera din datatyp som verkliga enheter. Du kan skapa relationer mellan datatyper som kan vara användbara i ett stort projekt.
Så ja grabbar, så här kan du skapa och använda en användardefinierad datatyp eller struktur i VBA. Jag hoppas att jag kunde förklara det. Om du har några frågor angående denna artikel eller andra VBA -relaterade frågor, ställ mig i kommentarfältet nedan. Jag kommer verkligen bli glad att höra från dig.
VBA -variabler i Excel| VBA står för Visual Basic for Applications. Det är ett programmeringsspråk från Microsoft. Den används med Microsoft Office-applikationer som MSExcel, MS-Word och MS-Access medan VBA-variabler är specifika nyckelord.
Excel VBA variabelt omfång| På alla programmeringsspråk har vi variabelåtkomstspecificerare som definierar varifrån en definierad variabel kan nås. Excel VBA är inget undantag. VBA har också omfångsspecifikatorer.
ByRef och ByVal -argument | När ett argument skickas som ett ByRef -argument till en annan sub eller funktion skickas referensen till den faktiska variabeln. Alla ändringar som görs i kopian av variabeln återspeglas i det ursprungliga argumentet.
Ta bort blad utan bekräftelsefrågor med VBA i Microsoft Excel | Eftersom du raderar blad med VBA vet du vad du gör. Du vill berätta för Excel att inte visa den här varningen och ta bort det jävla arket.
Lägg till och spara ny arbetsbok med VBA i Microsoft Excel 2016| I den här koden skapade vi först en referens till ett arbetsbokobjekt. Och sedan initierade vi det med ett nytt arbetsbokobjekt. Fördelen med detta tillvägagångssätt är att du enkelt kan utföra den nya arbetsboken. Som att spara, stänga, radera osv
Visa ett meddelande i Excel VBA -statusfältet| Statusfältet i excel kan användas som kodmonitor. När din VBA -kod är lång och du utför flera uppgifter med VBA, inaktiverar du ofta skärmuppdateringen så att du inte ser att skärmen flimrar.
Stäng av varningsmeddelanden med VBA i Microsoft Excel 2016| Denna kod inaktiverar inte bara VBA -varningar utan ökar också kodens tidseffektivitet. Låt oss se hur.
Populära artiklar:
50 Excel -genvägar för att öka din produktivitet | Bli snabbare på din uppgift. Dessa 50 genvägar får dig att arbeta ännu snabbare med Excel.
VLOOKUP -funktionen i Excel | Detta är en av de mest använda och populära Excel -funktionerna som används för att leta upp värde från olika intervall och ark.
COUNTIF i Excel 2016 | Räkna värden med förhållanden med denna fantastiska funktion. Du behöver inte filtrera dina data för att räkna specifika värden. Countif -funktionen är avgörande för att förbereda din instrumentpanel.
Hur man använder SUMIF -funktionen i Excel | Detta är en annan viktig instrumentpanel. Detta hjälper dig att summera värden på specifika förhållanden.