W tym artykule zademonstrujemy użycie funkcji VBA TypeName.
VBA Wpisz imię Funkcja służy do określenia typu danych przechowywanych w komórce lub typu wybranego obiektu - na przykład arkusza, zakresu lub komórki lub kontrolki na formularzu.
Określanie typu danych w komórce
Aby określić typ danych w komórce, możemy użyć funkcji TypeName z właściwością Cells.
123 | SubTestCellDataType()MsgBox "Typ danych w " & Cells(3, 2)).Adres & " is " & TypeName(Cells(3, 2)).Value)Napis końcowy |
Jeśli uruchomimy powyższy kod z arkuszem poniżej, okno komunikatu poinformuje nas, jaki typ danych znajduje się w komórce.
Określanie typu wybranego obiektu
Możemy również użyć TypeName, aby określić, jaki typ obiektu został wybrany w arkuszu - na przykład zakres lub wykres.
123 | Wybór podtestu()MsgBox "Wybrałeś " & TypeName(Selection)Napis końcowy |
Lub, jeśli wybierzemy wykres:
Możemy zagłębić się jeszcze bardziej i wybrać obiekty na wykresie, a makro zwróci to, co wybraliśmy.
Wszystko to może być najbardziej przydatne w budowaniu naszego projektu VBA, aby albo kontrolować przepływ kodu, albo zapobiegać występowaniu błędów poprzez testowanie, aby upewnić się, że wybrano właściwy typ obiektu lub prawidłowy typ danych jest wprowadzany do komórki .
Używanie TypeName na kontrolkach formularza
VBA umożliwia nam tworzenie interaktywnych formularzy, które użytkownik może wypełniać i zwracać dane do kodu do wykorzystania na różne sposoby. Możemy użyć operatora TypeName do określenia typu kontrolek, które są używane w formularzu.
W poniższym przykładzie utworzyłem formularz użytkownika z różnymi kontrolkami - kilkoma polami tekstowymi, polem kombi, 2 przyciskami opcji, 2 polami wyboru i 3 przyciskami poleceń.
Korzystając z poniższego kodu, mogę określić, jaki typ kontrolek znajduje się w formularzu, przeglądając wszystkie kontrolki w formularzu. Użyłem funkcji TypeName do zwrócenia komunikatu z typem kontrolki za pomocą instrukcji VBA IF, aby sprawdzić, jaki typ kontrolki jest wybrany.
123456 | Sub WhatControlType()Dim ctl jako obiektDla każdego ctl In Me.ControlsMsgBox "Kontrolka to " & TypeName(ctl)Następny ctlNapis końcowy |
Ten rodzaj kodu może być bardzo przydatny, jeśli chcemy włączyć lub wyłączyć kontrolki. W poniższym kodzie, gdy formularz jest otwierany po raz pierwszy, przyciski opcji i pola wyboru są wyłączone.
123456789101112 | Prywatna Sub UserForm_Initialize()Dim ctl jako obiektDla każdego ctl In Me.ControlsJeśli TypeName(ctl) = "Pole wyboru" Wtedyctl.Enabled = FałszElseIf TypeName(ctl) = "OptionButton" Thenctl.Enabled = FałszW przeciwnym raziectl.Enabled = PrawdaZakończ, jeśliNastępny ctlNapis końcowy |
Aby włączyć przyciski opcji i pola wyboru, napisałem dodatkowy kod za przyciskiem Włącz sterowanie.
12345678910 | Prywatna sub cmdEnable_Click()Dim ctl jako obiektDla każdego ctl In Me.ControlsJeśli TypeName(ctl) = "Pole wyboru" Wtedyctl.Enabled = Nie ctl.EnabledElseIf TypeName(ctl) = "OptionButton" Thenctl.Enabled = Nie ctl.EnabledZakończ, jeśliNastępny ctlNapis końcowy |
Funkcjonalność w tym kodzie można również utworzyć za pomocą operatora VBA TypeOf.