Како се користе структуре у ВБА? Кориснички дефинисани типови података

Преглед садржаја:

Anonim

Рецимо да покушавате да створите систем управљања школом. Овде ћете имати различите врсте променљивих као што су име ученика, број ученика, разред, итд. Школа такође има наставнике, тако да ће бити имена учитеља, наставнички предмет, часови итд. Слично, биће и много других објеката као што су , библиотекар, часови, принципи итд. Сада ће имати различите варијабле за сваки ентитет у школи неуредан посао. Како би било да креирате тип података ученик, наставник, часови итд. Који чува вредности повезане са њима. За ово можемо користити дефинисане типове података ВБА.

У овом чланку ћемо научити како можете да креирате сопствени тип података у ВБА. Они се називају УДТ -и ВБА.

Дефинисање кориснички дефинисаног типа података

За дефинисање структуре или УДТ -ова у ВБА користимо Типе___Енд Типе блок. Ево синтаксе УДТ -а.

Укуцајте Тнаме_Оф_Дата_Типе вар1 као тип података 'тип података може бити било шта, инт, низ или чак УДТ вар2 као тип података Вар3 () као тип података --- ВарН () као тип података Крај типа 

Дакле, да бисмо дефинисали прилагођени тип података у ВБА, почињемо са Типе Кеиворд. Затим уписујемо назив прилагођеног типа података. Уобичајено је користити Т испред назива типа података како бисте могли разликовати вба збирке и УДТ -ове.

Типови података могу бити било шта. И цео број, низ, варијанта, још један УДТ, низови, збирке, било шта.

Да бисте користили свој УДТ у програму, декларишите његову променљиву као и сваку другу променљиву.

Суб УсеУДТ 'Декларисање променљиве кориснички дефинисаног типа података Дим миВар1 као Тнаме_Оф_Дата_Типе Дим миВар2 као Тнаме_Оф_Дата_Типе Крај Суб 

Једноставно. Сада за употребу променљивих унутар овог УДТ -а користимо оператор тачке. Користите име типа података иза којег следи тачка и назив променљиве.

Суб УсеУДТ 'Проглашавање променљиве кориснички дефинисаног типа података Дим миВар1 као Тнаме_Оф_Дата_Типе Дим миВар2 као Тнаме_Оф_Дата_Типе миВар1.вар1 = "Абцд" миВар2.Вар2 = "кивз" Енд Суб 

Доста је било теорије, идемо на пример да видимо како то функционише.

Направите променљиву ученика која чува информације повезане са учеником

Дакле, имамо задатак да створимо кориснички дефинисан тип података који складишти информације везане за студенте.

Ученик има име, презиме, број ролне, датум рођења, разред, одсек, предмете.

Па хајде да га створимо.

'Креиран јавни ученички тип података Јавни тип Тстудент фНаме Ас Стринг' За име лНаме Ас Стринг 'За презиме рНо Ас Интегер' За број ролне цлсс Као стринг 'Фор сецтион сецтион Ас Стринг' Фор Наме Сецтион субјецт () Ас Стринг ' За предмете типа завршетка ученика 'Користите овај тип студента у потпрограму Под СтудентсИнфо ()' Креирање и иницијализација варијабле типа ученика Дим студент1 Као Тстудент студент1.фНаме = "Манисх" студент1.лНаме = "Сингх" студент1.рНо = 12334 студент1.цлсс = 10 студент1.сецтион = "А" РеДим студент1.субјецтс (2) студент1.субјецтс (0) = "пхисицс" студент1.субјецтс (1) = "Матх" 'Штампање података о студенту. Дебуг.Принт (студент1.фНаме) Дебуг.Принт (студент1.лНаме) Дебуг.Принт (студент1.рНо) Дебуг.Принт (студент1.цлсс) Дебуг.Принт (студент1.сецтион) Дебуг.Принт (студент1.субјецтс (0)) ) Дебуг.Принт (студент1.субјецтс (1)) Енд Суб 

Када покренете горњу подлогу, исписаће се резултат као што је приказано испод:

Манисх

Сингх

12334

10

А.

стање

Матх

Креирање низа УДТ -ова и приступа елементима

Слично томе, можете створити онолико променљивих типа Тстудент које су вам потребне. Можете чак да креирате низ типа Тстудент као и сваки други тип података.

Јавни тип Тстудент фНаме Ас Стринг 'Фор Фирст Наме лНаме Ас Стринг' Фор Презиме рНо Ас Интегер 'Фор Ролл Нумбер цлсс Ас стринг' Фор Цласс сецтион Ас Стринг 'Фор Наме Сецтион субјецт () Ас Стринг' Фор Субјецтс оф студент Енд Типе ' Креирање низа Тстудентс типа Суб СцхоолИнфо () Дим сцхоолНаме Ас Стринг Дим студентс () Ас Тстудент сцхоолНаме = "Виша школа" РеДим ученици (10) За и = 0 За 9 ученика (и) .фНаме = "наме" & Стр ( и + 1) студенти (и) .рНо = и + 1 Следеће и Дебуг.Принт ("Назив: Ролл Но") Фор и = 0 То 9 Дебуг.Принт (студентс (и) .фНаме & ":" & студентс ( и) .рНо) Следеће и Заврши подм 

Када покренете овај код, овај ће се одштампати у непосредном прозору.

Назив: Ролл Но.

име 1: 1

име 2: 2

име 3: 3

име 4: 4

име 5: 5

име 6: 6

име 7: 7

име 8: 8

име 9: 9

име 10: 10

У горњем коду, прво дефинисана УДТ структура пре и под (касније ћу објаснити зашто). Управо смо креирали низ користећи кључну реч дим, као што радимо за било коју променљиву у ВБА.

Затим смо користили Редим за дефинисање величине низа. Након тога користимо фор петљу за иницијализацију низа.

За приступ елементима структуре користимо другу фор петљу. То је то.

Зашто смо прогласили УДТ на врху модула?

Ако декларишемо УДТ прво у модулу, изван било које потпрограме или функције, он је доступан свим модулима у радној свесци. То значи да ако имате стотину претплатника и функција у модулу, сви они могу прогласити променљиве типа Студент у свом телу.

Ако УДТ није приватан, биће доступан свим модулима у радној свесци. Ако желите да структура (УДТ) буде доступна само модулу који садржи, прогласите је приватном.

Приватни тип Тстудент фНаме Ас Стринг лНаме Ас Стринг рНо Ас Интегер цлсс Ас Интегер сецтион Ас Стринг субјецтс () Ас Стринг Енд Типе 

Не можете имати УДТ на процедуралном нивоу. То значи да не можете дефинирати кориснички дефинирани тип података унутар потпрограма или функције.

Уметнути типови које дефинише корисник

Рецимо да сте УДТ звали ауто. Аутомобил има своје елементе. Слично имате УДТ који се зове бицикл и који може имати своја својства.

Рецимо да вам је потребан тип података који се зове возило. Возило може имати своје аутомобиле и бицикл. Можемо ли то учинити? Да, можемо то учинити. Погледајте доњи код

Приватни тип Тцар седишта Као Интегер ац Као Боолеов тип Као боја низа Као произвођач низа Као низ доп као датум рц_но Као тип краја низа Приватни тип Седишта за бицикле Као целобројни тип Као боја низа Као произвођач низа Као доп До као датум рц_но Као тип краја низа Приватно Упишите Број возила_Возила Као Интегер бицикла Као Тбике аутомобила Као Тцар Крај Тип ПодвозилоВарификација () Дим миВехицлес Ас Твехицле миВехицлес.нумбер_оф_Вехицле = 2 миВехицлес.бике.сеатс = 1 миВехицлес.бике.тип = "Рацинг 4" миВехицлес. "миВехицлес.цар.ац = Труе Дебуг.Принт миВехицлес.нумбер_оф_Вехицле Дебуг.Принт миВехицлес.бике.тип Дебуг.Принт миВехицлес.цар.ац Енд Суб 

Овде смо дефинисали три кориснички дефинисана типа података. Први је Тцар који садржи неке информације везане за аутомобиле. Друго је бицикл, он такође садржи неке информације о бициклу.

Трећи УДТ је Твехицле. Садржи једну променљиву за складиштење броја возила и две променљиве типа Тцар и Тбике.

Возило приватног типа

број_Возила као цео број

бике Ас Тбике

ауто Ас Тцар

Врста краја

За приступ променљивим Тцар -а и Тбике -а можемо користити тип података Твехицле. У подменију смо дефинисали само једну променљиву типа возила као миВехицлес. Када креирамо ову променљиву, ВБА такође ствара променљиве Тцар -а и Тбике -а.

За иницијализацију и приступ променљивим Тцар -а и Тцар -а можемо користити променљиву миВехицле. Као што видите у коду.

миВехицлес.нумбер_оф_Вехицле = 2

миВехицлес.бике.сеатс = 1

миВехицлес.бике.тип = "Трке"

миВехицлес.цар.сеатс = "4"

миВехицлес.цар.ац = Тачно

Када покренемо подморницу, резултат се јавља овако.

Ова функција заиста повећава моћ програмирања ВБА експоненцијално. Тип података можете структурирати попут ентитета из стварног света. Можете створити односе између типова података који могу бити корисни у великом пројекту.

Па да, момци, овако можете да креирате и користите кориснички дефинисан тип података или структуру у ВБА. Надам се да сам успео то да објасним. Ако имате питања у вези са овим чланком или било којим другим питањем везаним за ВБА, питајте ме у одељку за коментаре испод. Биће ми заиста драго да вас чујем.

ВБА променљиве у Екцелу| ВБА означава Висуал Басиц фор Апплицатионс. То је програмски језик компаније Мицрософт. Користи се са апликацијама Мицрософт Оффице као што су МСЕкцел, МС-Ворд и МС-Аццесс, док су ВБА променљиве одређене кључне речи.

Екцел ВБА променљиви опсег| У свим програмским језицима имамо спецификаторе приступа променљивим који дефинишу одакле се може приступити дефинисаној променљивој. Екцел ВБА није изузетак. ВБА такође има спецификаторе опсега.

Аргументи БиРефа и БиВала | Када се аргумент пренесе као БиРеф аргумент на другу под -функцију или функцију, шаље се референца стварне променљиве. Све промене направљене у копији променљиве ће се одразити у оригиналном аргументу.

Брисање листова без упита за потврду помоћу ВБА у програму Мицрософт Екцел | Пошто бришете листове помоћу ВБА, знате шта радите. Желели бисте да кажете Екцелу да не приказује ово упозорење и да избрише проклети лист.

Додајте и сачувајте нову радну свеску помоћу ВБА у програму Мицрософт Екцел 2016| У овом коду смо прво креирали референцу на објекат радне свеске. Затим смо га иницијализовали новим објектом радне свеске. Предност овог приступа је што можете лако да радите на овој новој радној свесци. Као чување, затварање, брисање итд

Прикажите поруку на статусној траци програма Екцел ВБА| Статусна трака у екцелу може се користити као монитор кода. Када је ваш ВБА код дугачак и обављате неколико задатака користећи ВБА, често онемогућујете ажурирање екрана тако да не видите да екран трепери.

Искључите поруке упозорења помоћу ВБА у програму Мицрософт Екцел 2016| Овај код не само да онемогућава ВБА упозорења, већ и повећава временску ефикасност кода. Да видимо како.

Популарни чланци:

50 Екцел пречица за повећање продуктивности | Убрзајте свој задатак. Ових 50 пречица ће учинити да радите још брже на Екцелу.

Функција ВЛООКУП у Екцелу | Ово је једна од најчешће кориштених и популарних функција програма Екцел која се користи за тражење вриједности из различитих распона и листова.

ЦОУНТИФ у програму Екцел 2016 | Бројте вредности са условима користећи ову невероватну функцију. Не морате да филтрирате податке да бисте рачунали одређене вредности. Цоунтиф функција је неопходна за припрему ваше контролне табле.

Како се користи функција СУМИФ у програму Екцел | Ово је још једна битна функција контролне табле. Ово вам помаже да сумирате вредности под одређеним условима.