Spis treści
Jednym z najczęstszych błędów, z jakimi spotykamy się podczas pracy z VBA w Excelu jest to, że typ zdefiniowany przez użytkownika nie jest zdefiniowany. W tym artykule pokażę, dlaczego ten błąd jest spowodowany i jak go rozwiązać.
Pobierz Zeszyt ćwiczeń
Pobierz ten zeszyt ćwiczeń, aby ćwiczyć podczas czytania tego artykułu.
Typ zdefiniowany przez użytkownika Not Defined.xlsm2 Przyczyny i rozwiązania Typ zdefiniowany przez użytkownika nie zdefiniowany w Excelu VBA
Istnieją 2 główne problemy stojące za tym często spotykanym w Excelu błędem VBA Poznajmy je szczegółowo i znajdźmy sposoby na ich rozwiązanie.
1) Błąd pisowni podczas deklarowania zmiennych
Jest to główna przyczyna tego błędu.W większości przypadków błąd "User-Defined Type not Defined" jest spowodowany błędem pisowni podczas deklarowania zmiennych.
Spójrz na następujące linie kodu.
Sub User_Defined_Type_not_Defined() Dim Name As Strng Name = "ExcelWIKI" MsgBox Name End Sub.
Jeśli uruchomisz ten kod, otrzymasz okno błędu informujące o obecności błędu "User-Defined Type Not Defined". Wraz z nim znajdziesz drugą linię kodu zaznaczoną na niebiesko, gdzie napisałem "strng" zamiast "string" .
Mam nadzieję, że rozumiecie o co chodzi. VBA nie mógł rozpoznać zmiennej typu "strng" Dlatego też uznał ją za nowy typ zmiennej i pomyślał, że gdzieś ją zdefiniowałeś, ale kiedy stwierdził, że nigdzie jej nie zadeklarowałeś, podniósł błąd.
Dlatego też, podczas prowadzenia prostych VBA kody, jeśli mimo wszystko napotkasz ten błąd, najpierw sprawdź wszystkie pisownie swoich typów zmiennych.
2. brak właściwego odniesienia
Inną przyczyną tego błędu jest brak odpowiedniego odwołania. Czasami w naszych kodach używamy obiektów, które wymagają odpowiedniego odwołania z Skrzynka referencyjna Visual Basic ... Inaczej, VBA nie rozpoznaje obiektu.
Zobacz. VBA kod.
Sub User_Defined_Type_not_Defined() Dim MyDictionary As Dictionary Set MyDictionary = CreateObject("Scripting.Dictionary") End Sub
Uruchom ten kod, a otrzymasz ten sam stary błąd. "User-Defined Type not Defined", podkreślenie Obiekt słownikowy To dlatego, że VBA nie mógł rozpoznać Obiekt słownikowy , i uznał ją za zmienną zdefiniowaną przez użytkownika, która nie została zdefiniowana błędnie.
Teraz największe pytanie brzmi, jak rozwiązać ten błąd? Łatwo. Istnieją 2 sposoby na rozwiązanie tego błędu.
⧪ Rozwiązanie 1: Sprawdzanie odniesienia do warunków wstępnych z poziomu okna referencyjnego Visual Box
Jest to najmądrzejszy sposób na rozwiązanie tego problemu.Przejdź do Narzędzia> Referencje przycisk w Visual Basic wstążka. kliknij na Referencje .
Pojawi się okno dialogowe o nazwie Referencje otworzy się. Przewiń i znajdź Microsoft Scripting Runtime (To zależy od obiektu, którego używasz. Obiekt słownikowy potrzebuje Microsoft Scripting Runtime aby zostać rozpoznanym. Tak więc, podczas używania obiektu w VBA kod, musisz znać jego warunek wstępny, aby zostać rozpoznanym przez VBA. Odwiedź ten link, aby uzyskać więcej informacji). Sprawdź.
Teraz wróć i uruchom kod, nie dostaniesz żadnych błędów. bo VBA potrafi rozpoznać Obiekt słownikowy tym razem.
⧪ Rozwiązanie 2: Deklarowanie go jako czystego obiektu, a nie konkretnego obiektu
Istnieje inny sposób rozwiązania tego problemu. Możesz zadeklarować obiekt jako czysty obiekt, a nie jako Obiekt słownikowy .
Zwróć uwagę na następujące linie kodu.
Sub User_Defined_Type_not_Defined() Dim MyDictionary As Object Set MyDictionary = CreateObject("Scripting.Dictionary") End Sub
Tutaj zadeklarowałem zmienną MyDictionary jako zwykły obiekt, a nie Słownik. Teraz, jeśli uruchomisz ten kod, nie otrzymasz żadnego błędu.