Inhaltsverzeichnis
Einer der häufigsten Fehler, mit denen wir bei der Arbeit mit VBA In diesem Artikel zeige ich Ihnen, warum dieser Fehler auftritt und wie Sie diesen Fehler beheben können.
Download Arbeitsbuch Praxis
Laden Sie dieses Übungsheft herunter, um zu üben, während Sie diesen Artikel lesen.
Benutzerdefinierter Typ Nicht Definiert.xlsm2 Ursachen und Lösungen für Nicht definierter benutzerdefinierter Typ in Excel VBA
Es gibt 2 Die Hauptgründe für diesen häufig auftretenden Fehler in Excel VBA Wir wollen sie im Detail untersuchen und herausfinden, wie man sie lösen kann.
1 Rechtschreibfehler bei der Variablendeklaration
Dies ist die Hauptursache für diesen Fehler, der in den meisten Fällen "Benutzerdefinierter Typ nicht definiert" wird durch einen Rechtschreibfehler bei der Deklaration von Variablen verursacht.
Sehen Sie sich die folgenden Codezeilen an.
Sub User_Defined_Type_not_Defined() Dim Name As Strng Name = "ExcelWIKI" MsgBox Name End Sub
Wenn Sie diesen Code ausführen, erhalten Sie eine Fehlermeldung, die Sie über das Vorhandensein des Fehlers informiert "Benutzerdefinierter Typ nicht definiert". Daneben finden Sie die zweite blau markierte Zeile des Codes, wo ich geschrieben habe "strng" anstelle von "string" .
Ich hoffe, Sie verstehen, worum es geht. VBA konnte den Variablentyp nicht erkennen "strng" Deshalb wurde sie als neuer Variablentyp betrachtet und es wurde davon ausgegangen, dass Sie sie irgendwo definiert haben. Als es jedoch feststellte, dass Sie sie nirgendwo deklariert haben, wurde ein Fehler ausgegeben.
Daher wird bei der Ausführung einfacher VBA Wenn Sie trotzdem auf diesen Fehler stoßen, überprüfen Sie zunächst alle Schreibweisen Ihrer Variablentypen.
2. unzureichende Referenzierung
Eine weitere Ursache für diesen Fehler ist das Fehlen einer korrekten Referenzierung. Manchmal verwenden wir in unseren Codes Objekte, die eine korrekte Referenzierung von der Visual Basic-Referenzbox . sonst, VBA erkennt das Objekt nicht.
Sehen Sie sich Folgendes an VBA Code.
Sub User_Defined_Type_not_Defined() Dim MyDictionary As Dictionary Set MyDictionary = CreateObject("Scripting.Dictionary") End Sub
Führen Sie diesen Code aus, und Sie erhalten die gleiche Fehlermeldung "Benutzerdefinierter Typ nicht definiert", Hervorhebung der Wörterbuchobjekt Der Grund dafür ist VBA konnte nicht erkennen, dass die Wörterbuchobjekt und betrachtete sie als benutzerdefinierte Variable, die nicht fälschlicherweise definiert wurde.
Die wichtigste Frage ist nun, wie man diesen Fehler beheben kann. Ganz einfach: Es gibt 2 Möglichkeiten zur Lösung dieses Fehlers.
⧪ Lösung 1: Überprüfen der Vorraussetzungsreferenz aus der Visual Box Reference Box
Dies ist der klügste Weg, dieses Problem zu lösen: Gehen Sie zum Werkzeuge> Referenzen Schaltfläche im Visual Basic Klicken Sie auf "Band". Referenzen .
Ein Dialogfeld mit der Bezeichnung Referenzen Scrollen Sie und finden Sie Microsoft Scripting-Laufzeit (Dies hängt von dem Objekt ab, das Sie verwenden. Die Wörterbuchobjekt braucht Microsoft Scripting-Laufzeit Bei der Verwendung eines Objekts in einer VBA Code, müssen Sie dessen Voraussetzung kennen, damit er von VBA. Besuchen Sie diesen Link für weitere Informationen.).
Wenn Sie jetzt zurückkommen und den Code ausführen, werden Sie keine Fehler erhalten, denn VBA können die Wörterbuchobjekt dieses Mal.
⧪ Lösung 2: Deklaration als reines Objekt und nicht als spezifisches Objekt
Es gibt noch eine andere Möglichkeit, dieses Problem zu lösen: Sie können das Objekt als reines Objekt deklarieren, anstatt ein Wörterbuchobjekt .
Beachten Sie die folgenden Codezeilen.
Sub User_Defined_Type_not_Defined() Dim MyDictionary As Object Set MyDictionary = CreateObject("Scripting.Dictionary") End Sub
Hier habe ich die Variable MeinWörterbuch als ein einfaches Objekt, nicht als ein Wörterbuch. Wenn Sie diesen Code jetzt ausführen, erhalten Sie keine Fehlermeldung.