Ako používať štruktúry vo VBA? Užívateľom definované typy údajov

Obsah:

Anonim

Povedzme, že sa pokúšate vytvoriť systém riadenia školy. Tu budete mať rôzne typy premenných, ako je meno študenta, zoznam študentov, trieda atď. Škola má aj učiteľov, takže budú k dispozícii mená učiteľov, predmet učiteľa, triedy atď. Podobne bude existovať mnoho ďalších predmetov, ako napr. knihovník, triedy, princíp atď. Mať rôzne premenné pre každú entitu v škole bude náročná práca. Čo tak vytvoriť dátový typ študenta, učiteľa, triedy atď., V ktorom budú uložené hodnoty, ktoré s nimi súvisia. Na to môžeme použiť definované dátové typy VBA.

V tomto článku sa naučíme, ako si môžete vo VBA vytvoriť vlastný typ údajov. Označujú sa ako UDT VBA.

Definovanie typu údajov definovaných používateľom

Na definovanie štruktúry alebo UDT vo VBA používame blok Type___End Type. Tu je syntax UDT.

Zadajte Tname_Of_Data_Type var1 ako dátový typ. Dátový typ môže byť čokoľvek, int, pole alebo dokonca UDT var2 ako dátový typ Var3 () ako dátový typ --- VarN () ako dátový typ Koniec Typ 

Aby sme definovali vlastný typ údajov vo VBA, začneme s typovým kľúčovým slovom. Potom napíšeme názov nášho vlastného dátového typu. Je obvyklé používať T pred názvom dátového typu, aby ste mohli rozlišovať medzi kolekciami vba a UDT.

Typmi údajov môže byť čokoľvek. A celé číslo, reťazec, variant, ďalší UDT, polia, zbierky, čokoľvek.

Ak chcete použiť svoje UDT v programe, deklarujte jeho premennú ako každú inú premennú.

Sub UseUDT 'Deklarujúca premenná používateľom definovaného dátového typu Dim myVar1 ako Tname_Of_Data_Type Dim myVar2 ako Tname_Of_Data_Type End Sub 

Jednoduché. Teraz na použitie premenných v tomto UDT používame bodový operátor. Použite názov dátového typu, za ktorým nasleduje bodka a názov premennej v rámci.

Sub UseUDT 'Deklarujúca premenná používateľom definovaného dátového typu Dim myVar1 ako Tname_Of_Data_Type Dim myVar2 ako Tname_Of_Data_Type myVar1.var1 = "Abcd" myVar2.Var2 = "xyvz" End Sub 

Dosť bolo teórie, skočme si na príklad, aby sme zistili, ako funguje.

Vytvorte študentskú premennú, ktorá bude uchovávať informácie súvisiace so študentom

Máme teda za úlohu vytvoriť užívateľsky definovaný dátový typ, ktorý bude uchovávať informácie týkajúce sa študentov.

Študent má krstné meno, priezvisko, rolkové číslo, dátum narodenia, triedu, sekciu, predmety.

Poďme to teda vytvoriť.

„Vytvorený verejný študentský dátový typ Verejný typ Tštudent fName As String“ Pre krstné meno lName As String „Pre priezvisko rNo As Integer“ Pre číslo rolky clss Ako reťazec „Pre sekciu triedy ako reťazec“ Pre predmety názvu sekcie () Ako reťazec “ Pre predmety konca študenta „Použiť tento typ Tstudent v podprogramu Sub StudentsInfo ()“ Vytvorenie a inicializácia premennej typu študenta 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 

Keď spustíte vyššie uvedenú podsekciu, výsledok sa vytlačí nasledovne:

Manish

Singh

12334

10

A

fyzika

Matematika

Vytvorenie poľa UDT a prístupových prvkov

Podobne môžete vytvoriť toľko premenných, koľko potrebujete Tstudent. Môžete dokonca vytvoriť pole typu Tstudent ako každý iný typ údajov.

Verejný typ Tstudent fName As String 'Pre krstné meno lName As String' Pre priezvisko rNo As integer 'Pre Roll Number clss As string' For Class section As String 'For Section Name předmětů () As String' For Subjects of student End Type ' Vytvorenie polí typu Tstudents 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) študenti (i) .rNo = i + 1 Ďalej i Debug.Print ("Meno: Roll No") Pre i = 0 až 9 Debug.Print (študenti (i) .fName & ":" & študenti ( i) .rNie) Ďalej i Koniec pod 

Keď spustíte tento kód, vytlačí sa v bezprostrednom okne.

Názov: kotúč č

meno 1: 1

meno 2: 2

meno 3: 3

meno 4: 4

meno 5: 5

meno 6: 6

meno 7: 7

meno 8: 8

meno 9: 9

meno 10: 10

Vo vyššie uvedenom kóde bola najskôr definovaná štruktúra UDT pred a sub (neskôr vysvetlím, prečo). Práve sme vytvorili pole pomocou tmavého kľúčového slova, ako to robíme pre akúkoľvek premennú vo VBA.

Potom sme pomocou Redim definovali veľkosť polí. Potom použijeme slučku for na inicializáciu poľa.

Na prístup k prvkom štruktúry používame inú slučku for. Toto je to.

Prečo sme deklarovali UDT na vrchole modulu?

Ak deklarujeme UDT najskôr v module, mimo akéhokoľvek podprogramu alebo funkcie, je k dispozícii pre všetky moduly v zošite. To znamená, že ak máte v module sto podskupín a funkcií, všetky môžu vo svojom tele deklarovať premenné typu študent.

Ak UDT nie je súkromný, bude k dispozícii pre všetky moduly v zošite. Ak chcete, aby bola štruktúra (UDT) dostupná iba pre modul obsahujúci, deklarujte ju ako súkromnú.

Súkromný typ študent 

Nemôžete mať UDT na procedurálnej úrovni. To znamená, že nemôžete definovať užívateľom definovaný typ údajov v rámci podprogramu alebo funkcie.

Vnorené typy definované používateľom

Povedzme, že máte UDT nazývaný auto. Auto má svoje vlastné prvky. Podobne máte UDT nazývaný bicykel, ktorý môže mať svoje vlastné vlastnosti.

Teraz povedzme, že potrebujete dátový typ s názvom vozidlo. Súčasťou vozidla môže byť auto a bicykel. Môžeme to urobiť? Áno, môžeme to urobiť. Pozrite sa na nižšie uvedený kód

Súkromné ​​sedadlá do auta ako celé číslo ac ako booleovský typ ako farba reťazca ako výrobca reťazcov ako reťazec dop ako dátum rc_no ako reťazec koniec typu súkromný typ sedadlá na bicykel ako celé číslo typ ako farba reťazca ako výrobca reťazca ako reťazec dop ako dátum rc_no ako reťazec koncový typ súkromný Typ Číslo nákladného vozidla_ Vozidlo ako celočíselný bicykel Ako auto na bicykli Ako koniec vozidla Typ Vedľajšie vozidloVariácia () Dim myVehicles As Tvehicle myVehicles.number_of_Vehicle = 2 myVehicles.bike.seats = 1 myVehicles.bike.typ = "Racing" myVehicles.car. "myVehicles.car.ac = True Debug.Print myVehicles.number_of_Vehicle Debug.Print myVehicles.bike.typ Debug.Print myVehicles.car.ac End Sub 

Tu sme definovali tri užívateľsky definované dátové typy. Prvým je Tcar, ktorý obsahuje niekoľko informácií týkajúcich sa automobilov. Druhým je bicykel, ktorý tiež obsahuje niekoľko informácií o bicykli.

Tretí UDT je ​​Tvehicle. Obsahuje jednu premennú na uloženie počtu vozidiel a dve premenné typu Tcar a Tbike.

Súkromné ​​vozidlo

number_of_Vehicle As Integer

bike As Tbike

auto ako Tcar

Typ konca

Na prístup k premenným Tcar a Tbike môžeme použiť dátový typ Tvehicle. V pododdiele sme definovali iba jednu premennú typu Tvehicle ako myVehicles. Keď vytvoríme túto premennú, VBA vytvorí aj premenné Tcar a Tbike.

Na inicializáciu a prístup k premenným Tcar a Tcar môžeme použiť premennú myVehicle. Ako vidíte v kóde.

myVehicles.number_of_Vehicle = 2

myVehicles.bike.seats = 1

myVehicles.bike.typ = "Preteky"

myVehicles.car.seats = "4"

myVehicles.car.ac = Pravda

Keď spustíme sub, dôjde k tomuto výsledku.

Táto funkcia skutočne exponenciálne zvyšuje silu programovania VBA. Svoj typ údajov môžete štruktúrovať ako entity v reálnom svete. Medzi dátovými typmi môžete vytvárať vzťahy, ktoré môžu byť užitočné vo veľkom projekte.

Takže áno, chlapci, takto môžete vo VBA vytvárať a používať užívateľsky definovaný dátový typ alebo štruktúru. Dúfam, že som to dokázal vysvetliť. Ak máte akékoľvek otázky týkajúce sa tohto článku alebo akékoľvek ďalšie otázky súvisiace s VBA, opýtajte sa ma v sekcii komentárov nižšie. Budem veľmi rád, keď sa mi ozvete.

Premenné VBA v Exceli| VBA je skratka pre Visual Basic for Applications. Je to programovací jazyk od spoločnosti Microsoft. Používa sa s aplikáciami balíka Microsoft Office, ako sú MSExcel, MS-Word a MS-Access, zatiaľ čo premenné VBA sú špecifické kľúčové slová.

Variabilný rozsah Excel VBA| Vo všetkých programovacích jazykoch máme špecifikátory prístupu k premenným, ktoré definujú, odkiaľ je k definovanej premennej prístup. Excel VBA nie je výnimkou. VBA má tiež špecifikátory rozsahu.

Argumenty ByRef a ByVal | Keď je argument odoslaný ako argument ByRef do iného podradeného prvku alebo funkcie, odošle sa odkaz na skutočnú premennú. Všetky zmeny vykonané v kópii premennej sa prejavia v pôvodnom argumente.

Odstráňte hárky bez výziev na potvrdenie pomocou VBA v programe Microsoft Excel | Keďže odstraňujete hárky pomocou jazyka VBA, viete, čo robíte. Chcete Excelu povedať, aby toto upozornenie nezobrazoval a vymazal ten prekliaty hárok.

Pridajte a uložte nový zošit pomocou jazyka VBA v programe Microsoft Excel 2016| V tomto kóde sme najskôr vytvorili odkaz na objekt zošita. A potom sme to inicializovali novým objektom zošita. Výhodou tohto prístupu je, že môžete ľahko vykonávať operácie s týmto novým zošitom. Rovnako ako ukladanie, zatváranie, mazanie atď

Zobrazte správu na stavovom riadku programu Excel VBA| Stavový riadok v Exceli je možné použiť ako monitor kódu. Keď je váš kód VBA dlhý a vykonávate niekoľko úloh pomocou jazyka VBA, často vypnete aktualizáciu obrazovky, aby ste videli, že obrazovka bliká.

Vypnite varovné správy pomocou VBA v programe Microsoft Excel 2016| Tento kód nielenže deaktivuje upozornenia VBA, ale tiež zvyšuje časovú účinnosť kódu. Pozrime sa ako.

Populárne články:

50 skratiek programu Excel na zvýšenie produktivity | Vykonajte svoju úlohu rýchlejšie. Týchto 50 skratiek vám umožní pracovať ešte rýchlejšie v Exceli.

Funkcia VLOOKUP v programe Excel | Toto je jedna z najpoužívanejších a najobľúbenejších funkcií programu Excel, ktorá sa používa na vyhľadávanie hodnôt z rôznych rozsahov a hárkov.

COUNTIF v Exceli 2016 | Počítajte hodnoty s podmienkami pomocou tejto úžasnej funkcie. Na počítanie konkrétnych hodnôt nie je potrebné filtrovať údaje. Funkcia Countif je potrebná na prípravu palubnej dosky.

Ako používať funkciu SUMIF v programe Excel | Toto je ďalšia zásadná funkcia palubnej dosky. To vám pomôže zhrnúť hodnoty za konkrétnych podmienok.