Załóżmy, że próbujesz stworzyć system zarządzania szkołą. Tutaj będziesz mieć różne typy zmiennych, takie jak imię i nazwisko ucznia, numer listy uczniów, klasa itp. Szkoła ma również nauczycieli, więc będą nazwiska nauczycieli, przedmiot nauczyciela, klasy itp. Podobnie będzie wiele innych obiektów, takich jak , bibliotekarz, klasa, zasada itp. Teraz posiadanie różnych zmiennych dla każdego podmiotu w szkole będzie kłopotliwe. Co powiesz na utworzenie typu danych ucznia, nauczyciela, klasy itp., który przechowuje powiązane z nimi wartości. Do tego możemy wykorzystać zdefiniowane typy danych VBA.
W tym artykule dowiemy się, jak stworzyć własny typ danych w VBA. Nazywa się je UDT VBA.
Definiowanie typu danych zdefiniowanego przez użytkownika
Do zdefiniowania struktury lub UDT w VBA używamy bloku Type___End Type. Oto składnia UDT.
Wpisz Tname_Of_Data_Type var1 jako typ danych 'typ danych może być dowolny, int, tablica lub nawet UDT var2 jako typ danych Var3() jako typ danych --- VarN() jako typ danych End Type
Aby zdefiniować niestandardowy typ danych w VBA, zaczynamy od słowa kluczowego Type. Następnie piszemy nazwę naszego niestandardowego typu danych. Konwencją jest używanie T przed nazwą typu danych, aby można było odróżnić kolekcje vba od UDT.
Typy danych mogą być dowolne. I Integer, String, Variant, inny UDT, tablice, kolekcje, cokolwiek.
Aby użyć swojego UDT w programie, zadeklaruj jego zmienną jak każdą inną zmienną.
Sub UseUDT 'Deklaracja zmiennej typu danych zdefiniowanego przez użytkownika Dim myVar1 jako Tname_Of_Data_Type Dim myVar2 jako Tname_Of_Data_Type End Sub
Prosty. Teraz, aby użyć zmiennych w tym UDT, używamy operatora kropki. Użyj nazwy typu danych, po której następuje kropka i nazwa zmiennej w obrębie.
Sub UseUDT 'Deklarowanie zmiennej typu danych zdefiniowanego przez użytkownika Dim myVar1 as Tname_Of_Data_Type Dim myVar2 as Tname_Of_Data_Type myVar1.var1="Abcd" myVar2.Var2="xyvz" End Sub
Dość teorii, przejdźmy do przykładu, aby zobaczyć, jak to działa.
Utwórz zmienną ucznia, która przechowuje informacje związane z uczniem
Mamy więc zadanie stworzenia typu danych zdefiniowanego przez użytkownika, który przechowuje informacje związane z uczniami.
Uczeń ma imię, nazwisko, numer listy, datę urodzenia, klasę, sekcję, przedmioty.
Więc stwórzmy to.
'Utworzono publiczny typ danych ucznia Typ publiczny Tstudent fName As String 'Dla imienia lName As String 'Dla nazwiska rNo As Integer 'Dla numeru rolki clss As string 'Dla sekcji klasy As String 'Dla sekcji o nazwie tematy() As String ' Dla przedmiotów studenta End Type 'Użyj tego typu Tstudent w podprogramie Sub StudentsInfo() 'Tworzenie i inicjowanie zmiennej typu studenta 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) = "fizyka" student1.subjects(1) = "Math" 'Drukowanie danych ucznia. Debug.Print (student1.fName) Debug.Print (student1.lName) Debug.Print (student1.rNo) Debug.Print (student1.clss) Debug.Print (student1.sekcja) Debug.Print (student1.subjects(0) ) Debug.Print (student1.subjects(1)) End Sub
Po uruchomieniu powyższego podrzędnego wydrukuje wynik, jak pokazano poniżej:
Manish
Singh 12334 10 A fizyka Matematyka |
Tworzenie tablicy UDT i dostęp do elementów
Podobnie możesz utworzyć tyle zmiennych typu Tstudent, ile potrzebujesz. Możesz nawet utworzyć tablicę typu Tstudent, jak każdy inny typ danych.
Typ publiczny Tstudent fName As String 'Dla imienia lName As String 'Dla nazwiska rNo As Integer 'Dla numeru rolki clss As string 'Dla sekcji klasy As String 'Dla przedmiotów o nazwie sekcji() As String 'Dla przedmiotów ucznia Typ zakończ.' Tworzenie tablicy Tstudents typu 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) studenci(i).rNo = i + 1 Dalej i Debug.Print ("Nazwa : Nr rolki") For i = 0 do 9 Debug.Print (students(i).fName & " : " & studenci( i).rNie) Dalej i Zakończ Sub
Po uruchomieniu tego kodu zostanie on wydrukowany w bezpośrednim oknie.
Nazwa : Rolka nr
imię 1 : 1 imię 2 : 2 imię 3 : 3 imię 4 : 4 imię 5 : 5 imię 6 : 6 imię 7 : 7 imię 8 : 8 imię 9 : 9 imię 10 : 10 |
W powyższym kodzie najpierw zdefiniowano strukturę UDT przed i sub (później wyjaśnię dlaczego). Właśnie utworzyliśmy tablicę za pomocą słowa kluczowego dim, tak jak robimy to dla każdej zmiennej w VBA.
Następnie użyliśmy Redima do zdefiniowania rozmiaru tablic. Następnie używamy pętli for do inicjalizacji tablicy.
Aby uzyskać dostęp do elementów konstrukcji, używamy kolejnej pętli for. To jest to.
Dlaczego zadeklarowaliśmy UDT na górze modułu?
Jeśli najpierw zadeklarujemy UDT w module, poza podprogramem lub funkcją, jest on dostępny dla wszystkich modułów w skoroszycie. Oznacza to, że jeśli masz sto subów i funkcji w module, wszystkie z nich mogą deklarować zmienne typu Student w swoim ciele.
Jeśli UDT nie jest prywatny, będzie dostępny dla wszystkich modułów w skoroszycie. Jeśli chcesz, aby struktura (UDT) była dostępna tylko dla modułu zawierającego, zadeklaruj ją jako prywatną.
Typ prywatny Tstudent fName As String lName As String rNo As Integer clss As Integer section As String tematy() As String End Type
Nie możesz mieć UDT na poziomie proceduralnym. Oznacza to, że nie można zdefiniować typu danych zdefiniowanego przez użytkownika w podprogramie lub funkcji.
Zagnieżdżone typy zdefiniowane przez użytkownika
Powiedzmy, że masz UDT wezwany samochód. Samochód ma swoje własne elementy. Podobnie masz UDT zwany rowerem, który może mieć swoje własne właściwości.
Załóżmy teraz, że potrzebujesz typu danych o nazwie pojazd. Pojazd może mieć w swoich elementach samochód i rower. Możemy to zrobić? Tak, możemy to zrobić. Zobacz poniższy kod
Private Type Siedzenia Tcar As Integer ac As Boolean typ As String color As String producent As String Dop As Date rc_no As String End Type Private Type Siedzenia Tbike As Integer typ As String color As String producent As String Dop As Date rc_no As String End Type Private Wpisz numer_pojazdu 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 = "Wyścigi ".4.myVehicles " myVehicles.car.ac = True Debug.Print myVehicles.number_of_Vehicle Debug.Print myVehicles.bike.typ Debug.Print myVehicles.car.ac End Sub
Tutaj zdefiniowaliśmy trzy typy danych zdefiniowane przez użytkownika. Pierwszy to Tcar, który zawiera informacje związane z samochodami. Drugi to rower, zawiera też informacje o rowerze.
Trzeci UDT to Tvehicle. Zawiera jedną zmienną do przechowywania liczby pojazdów oraz dwie zmienne typu Tcar i Tbike.
Prywatny typ pojazdu
number_of_Vehicle As Integer
rower Jak Tbike
samochód Jak Tcar
Typ zakończenia
Aby uzyskać dostęp do zmiennych Tcar i Tbike, możemy użyć typu danych Tvehicle. W sub zdefiniowaliśmy tylko jedną zmienną typu Tpojazd jako myVehicles. Kiedy tworzymy tę zmienną, VBA tworzy również zmienne Tcar i Tbike.
Aby zainicjować i uzyskać dostęp do zmiennych Tcar i Tcar, możemy użyć zmiennej myVehicle. Jak widać w kodzie.
mojePojazdy.liczba_pojazdu = 2
mojePojazdy.rower.miejsca = 1
myVehicles.bike.typ = "Wyścigi"
myVehicles.carseats = "4"
mojePojazdy.samochód.ac = Prawda
Kiedy uruchamiamy sub, taki jest wynik.
Ta funkcja naprawdę zwiększa moc programowania w języku VBA wykładniczo. Możesz ustrukturyzować swój typ danych jak encje świata rzeczywistego. Możesz tworzyć relacje między typami danych, które mogą być przydatne w dużym projekcie.
Tak, tak, w ten sposób można tworzyć i używać typu danych lub struktury zdefiniowanej przez użytkownika w VBA. Mam nadzieję, że udało mi się to wyjaśnić. Jeśli masz jakieś pytania dotyczące tego artykułu lub innych pytań związanych z VBA, zapytaj mnie w sekcji komentarzy poniżej. Będę bardzo szczęśliwy mogąc usłyszeć od ciebie.
Zmienne VBA w Excelu| VBA oznacza Visual Basic for Applications. Jest to język programowania firmy Microsoft. Jest używany z aplikacjami Microsoft Office, takimi jak MSExcel, MS-Word i MS-Access, podczas gdy zmienne VBA są specyficznymi słowami kluczowymi.
Zakres zmiennych Excel VBA| We wszystkich językach programowania mamy specyfikatory dostępu do zmiennych, które definiują, skąd można uzyskać dostęp do zdefiniowanej zmiennej. Excel VBA nie jest wyjątkiem. VBA również ma specyfikatory zakresu.
Argumenty ByRef i ByVal | Gdy argument jest przekazywany jako argument ByRef do innej podrzędnej lub funkcji, wysyłane jest odwołanie do rzeczywistej zmiennej. Wszelkie zmiany wprowadzone w kopii zmiennej zostaną odzwierciedlone w oryginalnym argumencie.
Usuń arkusze bez monitów o potwierdzenie za pomocą VBA w programie Microsoft Excel | Ponieważ usuwasz arkusze za pomocą VBA, wiesz, co robisz. Chcesz powiedzieć programowi Excel, aby nie wyświetlał tego ostrzeżenia i usuwał ten cholerny arkusz.
Dodaj i zapisz nowy skoroszyt za pomocą VBA w programie Microsoft Excel 2016| W tym kodzie najpierw utworzyliśmy odwołanie do obiektu skoroszytu. A następnie zainicjalizowaliśmy go nowym obiektem skoroszytu. Zaletą tego podejścia jest to, że możesz łatwo wykonywać operacje na tym nowym skoroszycie. Jak zapisywanie, zamykanie, usuwanie itp.
Wyświetl komunikat na pasku stanu Excel VBA| Pasek stanu w programie Excel może być używany jako monitor kodu. Gdy twój kod VBA jest długi i wykonujesz kilka zadań za pomocą VBA, często wyłączasz aktualizację ekranu, aby nie widzieć migotania ekranu.
Wyłącz komunikaty ostrzegawcze za pomocą VBA w programie Microsoft Excel 2016| Ten kod nie tylko wyłącza alerty VBA, ale także zwiększa wydajność czasową kodu. Zobaczmy jak.
Popularne artykuły:
50 skrótów Excela, które zwiększą Twoją produktywność | Przyspiesz swoje zadanie. Te 50 skrótów przyspieszy pracę w programie Excel.
Funkcja WYSZUKAJ.PIONOWO w programie Excel | Jest to jedna z najczęściej używanych i popularnych funkcji programu Excel, która służy do wyszukiwania wartości z różnych zakresów i arkuszy.
LICZ.JEŻELI w Excelu 2016 | Policz wartości z warunkami za pomocą tej niesamowitej funkcji. Nie musisz filtrować danych, aby zliczyć określone wartości. Funkcja Countif jest niezbędna do przygotowania deski rozdzielczej.
Jak korzystać z funkcji SUMIF w programie Excel? | To kolejna ważna funkcja deski rozdzielczej. Pomaga to zsumować wartości w określonych warunkach.