Jak používat struktury ve VBA? Uživatelem definované datové typy

Řekněme, že se pokoušíte vytvořit systém řízení školy. Zde budete mít různé typy proměnných, jako je jméno studenta, číslo žáka, třída atd. Škola má také učitele, takže zde budou jména učitelů, předmět učitele, třídy atd. Podobně bude existovat mnoho dalších objektů, jako je , knihovník, třídy, princip atd. Nyní mít různé proměnné pro každou entitu ve škole bude špinavá práce. Co takhle vytvořit datový typ student, učitel, třídy atd., Který bude ukládat hodnoty, které s nimi souvisejí. K tomu můžeme použít definované datové typy VBA.

V tomto článku se naučíme, jak si můžete ve VBA vytvořit vlastní datový typ. Jsou označovány jako UDT VBA.

Definování uživatelem definovaného datového typu

K definování struktury nebo UDT ve VBA používáme blok Type___End Type. Zde je syntaxe UDT.

Zadejte Tname_Of_Data_Type var1 jako datový typ. Datový typ může být cokoli, int, pole nebo dokonce UDT var2 jako datový typ Var3 () jako datový typ --- VarN () jako datový typ Koncový typ 

Abychom definovali vlastní datový typ ve VBA, začneme klíčovým slovem typu. Poté napíšeme název našeho vlastního datového typu. Je obvyklé používat T před názvem datového typu, abyste mohli rozlišovat mezi kolekcemi vba a UDT.

DataTypes může být cokoli. A celé číslo, řetězec, varianta, další UDT, pole, kolekce, cokoli.

Chcete -li použít UDT v programu, deklarujte jeho proměnnou jako jakoukoli jinou proměnnou.

Sub UseUDT 'Deklarující proměnná uživatelem definovaného datového typu Dim myVar1 jako Tname_Of_Data_Type Dim myVar2 jako Tname_Of_Data_Type End Sub 

Jednoduchý. Nyní k použití proměnných v tomto UDT používáme tečkový operátor. Použijte název datového typu následovaný tečkou a názvem proměnné uvnitř.

Sub UseUDT 'Deklarující proměnná uživatelem definovaného datového typu Dim myVar1 jako Tname_Of_Data_Type Dim myVar2 jako Tname_Of_Data_Type myVar1.var1 = "Abcd" myVar2.Var2 = "xyvz" End Sub 

Dost teorie, pojďme se podívat na příklad, abychom zjistili, jak funguje.

Vytvořte proměnnou studenta, která bude ukládat informace související se studentem

Máme tedy za úkol vytvořit uživatelsky definovaný datový typ, který ukládá informace týkající se studentů.

Student má křestní jméno, příjmení, číslo role, datum narození, třídu, sekci, předměty.

Pojďme to tedy vytvořit.

'Vytvořen veřejný studentský datový typ Veřejný typ Tstudent fName As String' Pro křestní jméno lName As String 'Pro příjmení rNo As Integer' Pro Roll Number clss Jako řetězec 'For Class class As String' For Subject Name subjektů () As String ' Pro Subject of Student End Type 'Use this Tstudent type in subrutine Sub StudentsInfo ()' Create and initializing student type variable 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) = "fyzika" student1.subjects (1) = "Math" 'Tisk podrobností studenta. 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 

Když spustíte výše uvedenou část, vytiskne výsledek, jak je uvedeno níže:

Manish

Singh

12334

10

A

fyzika

Matematika

Vytvoření pole UDT a přístupových prvků

Podobně můžete vytvořit tolik proměnných typu Tstudent, jaké potřebujete. Můžete dokonce vytvořit pole typu Tstudent jako jakýkoli jiný datový typ.

Public 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 předmětů () As String' For Subjects of student End Type ' Vytvoření 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) studenti (i) .rNo = i + 1 Další i Debug.Print ("Název: Roll No") Pro i = 0 až 9 Debug.Print (studenti (i) .fName & ":" & studenti ( i) .rNe) Další i Konec Sub 

Když spustíte tento kód, bude vytištěn v bezprostředním okně.

Název: Roll No

jméno 1: 1

jméno 2: 2

jméno 3: 3

jméno 4: 4

jméno 5: 5

jméno 6: 6

jméno 7: 7

jméno 8: 8

jméno 9: 9

jméno 10: 10

Ve výše uvedeném kódu je nejprve definována struktura UDT před a sub (později vysvětlím proč). Právě jsme vytvořili pole pomocí klíčového slova dim, jako to děláme pro libovolnou proměnnou ve VBA.

Poté jsme pomocí Redim definovali velikost polí. Poté použijeme pro inicializaci pole smyčku for.

Pro přístup k prvkům struktury používáme další smyčku for. To je vše.

Proč jsme deklarovali UDT na vrcholu modulu?

Pokud deklarujeme UDT nejprve v modulu, mimo jakýkoli podprogram nebo funkci, je k dispozici všem modulům v sešitu. To znamená, že pokud máte v modulu sto podřízených funkcí a funkcí, všichni mohou ve svém těle deklarovat proměnné typu Student.

Pokud UDT není soukromé, bude k dispozici všem modulům v sešitu. Pokud chcete, aby struktura (UDT) byla k dispozici pouze pro modul obsahující, deklarujte jej jako soukromý.

Soukromý typ student 

Nemůžete mít UDT na procedurální úrovni. To znamená, že nemůžete definovat uživatelem definovaný datový typ uvnitř podprogramu nebo funkce.

Vnořené typy definované uživatelem

Řekněme, že jste UDT nazývali auto. Auto má své vlastní prvky. Podobně máte UDT nazývaný kolo, které může mít své vlastní vlastnosti.

Nyní řekněme, že potřebujete datový typ s názvem Vehicle. Součástí vozidla může být auto a kolo. Můžeme to udělat? Ano, můžeme to udělat. Viz níže uvedený kód

Soukromý typ Sedadla do auta Jako Integer ac Jako booleovský typ jako String barva As String výrobce As String Dop As Date rc_no As String End Type Private Type Tbike sedačky As Integer typ As String color As String výrobce As String Dop As Date rc_no As String End Type Private Typ Číslo vozidla__Vehicle jako celočíselné kolo jako auto Tbike jako konec vozu Typ Sub vozidloVarification () 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 

Zde jsme definovali tři uživatelsky definované datové typy. První je Tcar, který obsahuje nějaké informace týkající se automobilů. Za druhé je kolo, obsahuje také několik informací o kole.

Třetím UDT je ​​Tvehicle. Obsahuje jednu proměnnou pro uložení počtu vozidel a dvě proměnné typu Tcar a Tbike.

Soukromý typ vozidla

number_of_Vehicle As Integer

kolo jako Tbike

auto jako Tcar

Typ konce

Pro přístup k proměnným Tcar a Tbike můžeme použít datový typ Tvehicle. V sub, jsme definovali pouze jednu proměnnou typu Tvehicle jako myVehicles. Když vytvoříme tuto proměnnou, VBA vytvoří také proměnné Tcar a Tbike.

K inicializaci a přístupu k proměnným Tcar a Tcar můžeme použít proměnnou myVehicle. Jak vidíte v kódu.

myVehicles.number_of_Vehicle = 2

myVehicles.bike.seats = 1

myVehicles.bike.typ = "Závodní"

myVehicles.car.seats = "4"

myVehicles.car.ac = Pravda

Když spustíme sub, dojde k tomuto výsledku.

Tato funkce opravdu exponenciálně zvyšuje sílu programování VBA. Svůj datový typ můžete strukturovat jako entity v reálném světě. Můžete vytvářet vztahy mezi datovými typy, které mohou být užitečné ve velkém projektu.

Takže jo, lidi, takto můžete ve VBA vytvářet a používat uživatelsky definovaný datový typ nebo strukturu. Doufám, že jsem to dokázal vysvětlit. Máte -li jakékoli dotazy týkající se tohoto článku nebo jakékoli jiné otázky související s VBA, zeptejte se mě v sekci komentáře níže. Budu opravdu rád, když se mi ozvete.

Proměnné VBA v Excelu| VBA znamená Visual Basic for Applications. Jedná se o programovací jazyk od společnosti Microsoft. Používá se s aplikacemi Microsoft Office, jako jsou MSExcel, MS-Word a MS-Access, zatímco proměnné VBA jsou specifická klíčová slova.

Proměnný rozsah Excel VBA| Ve všech programovacích jazycích máme specifikátory přístupu k proměnným, které definují, odkud lze k definované proměnné přistupovat. Excel VBA není výjimkou. VBA má také specifikátory rozsahu.

Argumenty ByRef a ByVal | Když je argument předán jako ByRef argument jinému sub nebo funkci, je odeslán odkaz na skutečnou proměnnou. Jakékoli změny provedené v kopii proměnné se projeví v původním argumentu.

Odstraňte listy bez výzev k potvrzení pomocí VBA v aplikaci Microsoft Excel | Protože odstraňujete listy pomocí VBA, víte, co děláte. Chtěli byste říct Excelu, aby toto varování nezobrazoval a ten zatracený list smazal.

Přidat a uložit nový sešit pomocí jazyka VBA v aplikaci Microsoft Excel 2016| V tomto kódu jsme nejprve vytvořili odkaz na objekt sešitu. A pak jsme to inicializovali novým objektem sešitu. Výhodou tohoto přístupu je, že na tomto novém sešitu můžete snadno provádět operace. Stejně jako ukládání, zavírání, mazání atd

Zobrazit zprávu na stavovém řádku aplikace Excel VBA| Stavový řádek v Excelu lze použít jako monitor kódu. Když je váš kód VBA dlouhý a provádíte několik úkolů pomocí VBA, často deaktivujete aktualizaci obrazovky, abyste neviděli, že tato obrazovka bliká.

Vypněte varovné zprávy pomocí VBA v aplikaci Microsoft Excel 2016| Tento kód nejenže zakáže výstrahy VBA, ale také zvyšuje časovou účinnost kódu. Uvidíme jak.

Oblíbené články:

50 zkratek aplikace Excel pro zvýšení produktivity | Získejte rychleji svůj úkol. Těchto 50 klávesových zkratek vám umožní pracovat v Excelu ještě rychleji.

Funkce VLOOKUP v Excelu | Toto je jedna z nejpoužívanějších a nejoblíbenějších funkcí Excelu, která slouží k vyhledávání hodnot z různých rozsahů a listů.

COUNTIF v aplikaci Excel 2016 | Pomocí této úžasné funkce spočítejte hodnoty s podmínkami. K počítání konkrétních hodnot nemusíte data filtrovat. Funkce Countif je nezbytná pro přípravu řídicího panelu.

Jak používat funkci SUMIF v aplikaci Excel | Toto je další základní funkce řídicího panelu. To vám pomůže shrnout hodnoty za konkrétních podmínek.

Vám pomůže rozvoji místa, sdílet stránku s přáteli

wave wave wave wave wave