Как да използвам структури във VBA? Дефинираните от потребителя типове данни

Съдържание:

Anonim

Да речем, че се опитвате да създадете система за управление на училище. Тук ще имате различни типове променливи като име на ученик, номер на ученик, клас и т.н. Училището също има учители, така че ще има имена на учители, учителски предмет, класове и т.н. По същия начин ще има много други обекти като , библиотекар, класове, принцип и т.н. Сега наличието на различни променливи за всеки обект в училище ще бъде объркана работа. Какво ще кажете за създаване на тип данни ученик, учител, класове и т.н., който да съхранява ценности, свързани с тях. За това можем да използваме определени типове данни VBA.

В тази статия ще научим как можете да създадете свой собствен тип данни във VBA. Те се наричат ​​UDT на VBA.

Дефиниране на потребителски тип данни

За дефиниране на структура или UDT във VBA използваме Type___End Type блок. Ето синтаксиса на UDT.

Въведете Tname_Of_Data_Type var1 като тип данни Типът данни може да бъде всичко, int, масив или дори UDT var2 като тип данни Var3 () като тип данни --- VarN () като тип данни Краен тип 

Така че, за да дефинираме персонализиран тип данни във VBA, започваме с Type Keyword. След това пишем името на нашия персонализиран тип данни. Условно е да използвате T преди името на типа данни, за да можете да правите разлика между vba колекции и UDT.

Типовете данни могат да бъдат всичко. И Integer, String, Variant, друг UDT, масиви, колекции, всичко.

За да използвате вашия UDT в програмата, декларирайте неговата променлива като всяка друга променлива.

Sub UseUDT 'Деклариране на променлива на потребителски тип данни Dim myVar1 като Tname_Of_Data_Type Dim myVar2 като Tname_Of_Data_Type End Sub 

Прост. Сега, за да използваме променливите в рамките на този UDT, използваме точков оператор. Използвайте името на типа данни, последвано от точка и име на променлива вътре.

Sub UseUDT 'Деклариране на променлива на потребителски тип данни Dim myVar1 като Tname_Of_Data_Type Dim myVar2 като Tname_Of_Data_Type myVar1.var1 = "Abcd" myVar2.Var2 = "xyvz" End Sub 

Стига с теорията, нека влезем в пример, за да видим как работи.

Създайте променлива за ученици, която съхранява информация, свързана с ученик

Така че имаме задача да създадем потребителски тип данни, който да съхранява информация, свързана с учениците.

Ученикът има име, фамилия, номер на ролка, дата на раждане, клас, раздел, предмети.

Така че нека го създадем.

„Създаден публичен ученически тип данни Публичен тип Tstudent fName As String“ For First Name lName As String „For Last Name rNo As Integer“ For Roll Number clss As string „For section section As String“ For Name Name subject () As String “ За субекти на студентски краен тип „Използвайте този тип Tstudent в подпрограма Sub StudentsInfo ()“ Създаване и инициализиране на променлива тип ученик Dim student1 Като 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" 'Отпечатване на подробности за ученика. 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 

Когато стартирате горния под, той ще отпечата резултата, както е показано по -долу:

Маниш

Сингх

12334

10

А

физика

Математика

Създаване на масив от UDT и достъп до елементи

По същия начин можете да създадете колкото се може повече променливи от тип Tstudent, от които се нуждаете. Можете дори да създадете масив от тип Tstudent като всеки друг тип данни.

Публичен тип 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 Subjections Name () As String„ For Subjects of student End Type “ Създаване на масиви от тип Tstudents Sub SchoolInfo () Dim schoolName As String Dim students () As Tstudent schoolName = "Senior School" ReDim студенти (10) За i = 0 До 9 ученици (i) .fName = "име" & Str ( i + 1) студенти (i) .rNo = i + 1 Следващ i Debug.Print ("Име: Roll No") За i = 0 до 9 Debug.Print (students (i) .fName & ":" & students ( i) .rNo) Напред i Край на Sub 

Когато стартирате този код, той ще бъде отпечатан в непосредствения прозорец.

Име: Roll No

име 1: 1

име 2: 2

име 3: 3

име 4: 4

име 5: 5

име 6: 6

име 7: 7

име 8: 8

име 9: 9

име 10: 10

В горния код, първо дефинирана UDT структура преди и под (ще обясня по -късно защо). Току -що създадохме масив, използвайки ключова дума dim, както правим за всяка променлива във VBA.

След това използвахме Redim, за да определим размера на масивите. След това използваме цикъл for за инициализиране на масива.

За достъп до елементите на структурата използваме друг for цикъл. Това е.

Защо обявихме UDT отгоре на модула?

Ако декларираме UDT първо в модул, извън всяка подпрограма или функция, той е достъпен за всички модули в работната книга. Това означава, че ако имате сто абонамента и функции в модул, всички те могат да декларират променливи тип Student в своето тяло.

Ако UDT не е частен, той ще бъде достъпен за всички модули в работната книга. Ако искате структура (UDT) да бъде достъпна само за съдържащ модул, обявете я за частна.

Частен тип Tstudent fName As String lName As String rNo As Integer clss As Integer section As String subjects () As String End Type 

Не можете да имате UDT на процедурно ниво. Това означава, че не можете да дефинирате потребителски тип данни в подпрограма или функция.

Вложени типове, дефинирани от потребителя

Да предположим, че UDT се нарича кола. Колата има свои собствени елементи. По същия начин имате UDT, наречен велосипед, който може да има свои собствени свойства.

Да кажем, че имате нужда от тип данни, наречен превозно средство. Превозното средство може да има кола и мотор като елементи. Можем ли да направим това? Да, можем да направим това. Вижте кода по -долу

Частен тип Tcar места като целочислено ac като булев тип като цвят на низа като производител на низове като низа Dop като дата rc_no като тип край на низа частен тип седалки за мотоциклети като целочислено тип като цвят на низ Въведете номер на превозно средство_на_превозно средство като целочислено колело като автомобил на мотоциклет като край на автомобил тип под превозно средствоVarification () Dim myVehicles As Tvehicle myVehicles.number_of_Vehicle = 2 myVehicles.bike.seats = 1 myVehicles.bike.typ = "Racing 4" myVehicles. "myVehicles.car.ac = True Debug.Print myVehicles.number_of_Vehicle Debug.Print myVehicles.bike.typ Debug.Print myVehicles.car.ac End Sub 

Тук дефинирахме три типа данни, дефинирани от потребителя. Първият е Tcar, който съдържа известна информация, свързана с автомобилите. Второто е велосипед, той също съдържа известна информация за мотора.

Третият UDT е Tvehicle. Той съдържа една променлива за съхраняване на брой превозни средства и две променливи от тип Tcar и Tbike.

Превозно средство от частен тип

number_of_Vehicle As Integer

мотор като Tbike

кола като Tcar

Тип на края

За достъп до променливи на Tcar и Tbike можем да използваме тип данни Tvehicle. В подкатегорията дефинирахме само една променлива от типа Tvehicle като myVehicles. Когато създаваме тази променлива, VBA създава и променливи на Tcar и Tbike.

За инициализиране и достъп до променливи на Tcar и Tcar, можем да използваме променливата myVehicle. Както можете да видите в кода.

myVehicles.number_of_Vehicle = 2

myVehicles.bike.seats = 1

myVehicles.bike.typ = "Състезания"

myVehicles.car.seats = "4"

myVehicles.car.ac = Вярно

Когато стартираме подводницата, резултатът се получава по този начин.

Тази функция наистина увеличава силата на програмиране на VBA експоненциално. Можете да структурирате типа си данни като обекти от реалния свят. Можете да създавате отношения между типове данни, които могат да бъдат полезни в голям проект.

Така че да, момчета, ето как можете да създавате и използвате потребителски тип данни или структура във VBA. Надявам се, че успях да го обясня. Ако имате въпроси относно тази статия или други въпроси, свързани с VBA, попитайте ме в секцията за коментари по -долу. Ще се радвам да ви чуя.

VBA променливи в Excel| VBA означава Visual Basic за приложения. Това е език за програмиране от Microsoft. Използва се с приложения на Microsoft Office като MSExcel, MS-Word и MS-Access, докато VBA променливите са специфични ключови думи.

Променлив обхват на Excel VBA| Във всички езици за програмиране имаме променливи спецификатори за достъп, които определят от къде може да се получи достъп до определена променлива. Excel VBA не е изключение. VBA също има спецификатори на обхвата.

Аргументи на ByRef и ByVal | Когато един аргумент се предава като аргумент ByRef на различна под -функция или функция, се изпраща препратката към действителната променлива. Всички промени, направени в копието на променливата, ще се отразят в първоначалния аргумент.

Изтриване на листове без подкани за потвърждение с помощта на VBA в Microsoft Excel | Тъй като изтривате листове с помощта на VBA, знаете какво правите. Бихте искали да кажете на Excel да не показва това предупреждение и да изтрие проклетия лист.

Добавяне и запазване на нова работна книга с помощта на VBA в Microsoft Excel 2016| В този код първо създадохме препратка към обект на работна книга. И тогава го инициализирахме с нов обект на работна книга. Ползата от този подход е, че можете лесно да извършвате операции с тази нова работна книга. Като запазване, затваряне, изтриване и т.н.

Показване на съобщение в лентата за състоянието на Excel VBA| Лентата на състоянието в Excel може да се използва като монитор на кодове. Когато вашият VBA код е дълъг и изпълнявате няколко задачи с помощта на VBA, често деактивирате актуализацията на екрана, така че да не виждате този екран да трепти.

Изключете предупредителните съобщения с помощта на VBA в Microsoft Excel 2016| Този код не само деактивира сигналите за VBA, но също така увеличава ефективността на кода във времето. Да видим как.

Популярни статии:

50 преки пътища в Excel за повишаване на вашата производителност | Бъдете по -бързи в задачата си. Тези 50 преки пътища ще ви накарат да работите още по -бързо в Excel.

Функцията VLOOKUP в Excel | Това е една от най -използваните и популярни функции на excel, която се използва за търсене на стойност от различни диапазони и листове.

COUNTIF в Excel 2016 | Пребройте стойностите с условия, използвайки тази невероятна функция. Не е необходимо да филтрирате данните си, за да броите конкретни стойности. Функцията Countif е от съществено значение за подготовката на вашето табло.

Как да използвате функцията SUMIF в Excel | Това е друга основна функция на таблото. Това ви помага да обобщите стойностите при конкретни условия.