2009-08-19 17 views
2

Ich habe eine Microsoft Word Vorlage mit Code und einigen Referenzen, die seit Monaten gut funktioniert, aber gerade angefangen hat, einen falschen "User-defined type" zu erzeugen nicht definiert "Fehler, wenn ich es öffne oder versuche, es zu kompilieren.Fehlerhafter "Benutzerdefinierter Typ nicht definiert" -Fehler in Microsoft Word VBA

Ich weiß, es ist ein falscher Fehler, weil ich keine wesentlichen Änderungen am Code vorgenommen habe. Tatsächlich habe ich den Code auf die letzte bereitgestellte Version zurückgesetzt (von der ich weiß, dass sie funktioniert), und ich bekomme immer noch den Fehler. Ich habe auch den ganzen Code in der Vorlage auskommentiert und ich bekomme immer noch den Fehler. Ich habe auch alle Verweise entfernt und neu hinzugefügt (derselbe Fehler), und alle Verweise entfernt und sie einzeln hinzugefügt, bis die resultierenden Kompilierungsfehler behoben sind. An diesem Punkt bin ich mit dem falschen "Benutzer" zurück -defined Typ nicht definiert "Fehler. (Ich nenne das jetzt einen UDTND-Fehler, um nicht alle verrückt zu machen.) Ich glaube, der Fehler ist aufgetreten, nachdem ich meinen PC neu gestartet habe. Es passiert nur mit dieser Vorlage, aber ich sehe nicht, wie es mit dieser Vorlage etwas zu tun haben kann.

Interessanterweise ist der Fehler auf subtile Weise unterscheidet sich von einem echten UDTND Fehler auf folgende Weise:

  • Kein Code wird hervorgehoben, wenn der Fehler angezeigt wird.

  • Der Dialog trägt den Titel "Microsoft Visual Basic" und enthält die Fehlermeldung, enthält jedoch im Gegensatz zu einem echten UDTND-Fehler nicht den Text "Kompilierfehler:";

  • Es passiert, wenn die Vorlage geöffnet wird, nicht nur, wenn es kompiliert wird (zumindest denke ich, das ist anders als ein normaler Fehler).

Ich habe versucht, googeln, aber ich bekommen nur bazillion Ergebnisse vom Anfänger Entwickler fragen, warum sie diesen Fehler erhalten, mit Antworten ihnen zu sagen, dass sie entweder den fehlenden Typ deklarieren müssen, korrigieren Sie die Rechtschreibung des betreffenden Variablentyp oder fügen Sie einen Verweis auf eine fehlende Bibliothek hinzu. Ich habe den ganzen Nachmittag mit meinem Kopf gegen meinen Bildschirm geschlagen, und das hat ungefähr genauso geholfen wie all die anderen Dinge, die ich versucht habe (d. H. Überhaupt nicht). Ich habe das Gefühl, dass dies etwas mit einer vermasselten Referenz zu tun hat, aber es geht ihnen gut, und ich habe sie entfernt und neu hinzugefügt, was ich erwarten würde, um ein solches Problem zu lösen.

Irgendwelche Ideen ...?

Antwort

-1

Überprüfen Sie this link für einen Microsoft-Fehler, der verwandt sein könnte.

TLDR:

Der Verweis auf ein Paket/Addin/was auch immer wahrscheinlich neu referenziert werden muss. Überprüfen Sie Tools -> Referenzen im Menü.

Auch scheint, dass wenn Sie Microsoft Security Advisory 960715 installieren, bestimmte Steuerelemente getötet werden. Es gibt Fehlerbehebungen, die für Sie funktionieren können oder nicht. Ein guter Artikel ist in diesem Blog:

VSOD Blog

1

Ihre Fehlersuche auf Referenzen ist Klang. Es war einmal (und ich erinnere mich nicht an den genauen Fehler) Ich war an der gleichen Stelle, und die Referenz Bestellung war der Schlüssel. Wenn Sie Referenzen festlegen, werden Sie eine Anpassungsfunktion für die Priorität bemerken. Experimentieren Sie damit und Sie können das lösen.

+0

Ich muss zustimmen. Ich hatte den gleichen Fehler. Es war letztes Jahr, aber ich bin mir sicher, dass die Reihenfolge der Referenzen falsch war. Möglicherweise eine automatisch aktualisierte Referenz. Es war frustrierend, weil Template jahrelang ohne Probleme gearbeitet hat. – AMissico

+0

Möglicher stiller Fehler (bei Fortsetzen des nächsten oder ähnlicher Fehler) während der Klasseninitialisierung. Stellen Sie sicher, dass "Hintergrundkompilierung" deaktiviert ist. – AMissico

0

Ja Referenzen wie bereits erwähnt, ist der erste Schritt bei der Behebung dieses Problems wären aber andernfalls, dass id loslaufen den Code in jedem Fall Verfahren Auskommen beim Start (obwohl meine Erfahrung mit Access VBA nur)

1

Ich habe "Benutzerdefinierter Typ nicht definiert" Problem bei mehreren Gelegenheiten beim Kompilieren von Microsoft Visual Basic 6 (MSVB6) Code, der zuvor ohne Probleme kompiliert hatte. Es scheint zu passieren, nachdem ich eine lange Codierungssitzung hatte, ohne den Computer neu zu starten. Wie Sie sich denken können, habe ich Microsoft-Betriebssysteme verwendet. Ich verwende derzeit Windows XP. Ein Neustart des Computers behebt normalerweise das Problem, wie es oft auf Microsoft-Betriebssystemen geschieht.

Ich habe gelesen, dass voll qualifizierte Erklärungen auch helfen können, z. B. "Dim oBar als Foo.Bar" anstelle von "Dim oBar als Bar". Ich habe diesen Ansatz jedoch nicht ausprobiert.

1

Ich hatte ein sehr ähnliches Problem.

Mein Problem erschien (ich denke), gerade nachdem ich eine Suche und ersetzen, die ich abgebrochen habe (Strg + Z). . Es wurde von dem Problem nicht highligting, nur die „“ Benutzerdefinierte Typ nicht definiert“Fehlermeldung, wenn ich kompiliert

Ich habe versucht:

1) der Computer neu gestartet
2) Änderungsreferenz Bestellung
3) Entfernen von Funktionen/Prozeduren, Module einer nach dem anderen

nicht funktioniert Mein Projekt in Excel VBA geschrieben wurde und hier war die Lösung fand ich

dIE LÖSUNG:...

Ich habe eine neue Excel-Datei geöffnet und den Visual Basic-Editor geöffnet. Ich habe dann alle Formulare, Module und Klassenmodule einzeln in die neue Datei kopiert. Ich habe dann die Steuerobjekte (3 Commandbuttons) vom alten Blatt in das neue kopiert. Nun war die neue Datei mit dem alten Projekt identisch -. Nur der „“ Benutzerdefinierte Typ nicht definiert“war verschwunden und Problem gelöst wurde

0

ich das gleiche Problem mit Excel hatte 2013

Es begann, als ich Ich habe den Namen der Klasse nach der Suche geändert und den Namen der Klasse geändert, und der Spurfehler hat sofort danach begonnen ..

Ich kehrte zu einem frühere Version Anzeige bestätigt, dass das Problem nicht da war und dann die gleiche Suche und ersetzen und umbenennen und bekam das gleiche Verhalten wieder.

Die benutzerdefinierte Klasse, die ich änderte, hatte nur einen Verbraucher und es war auch eine benutzerdefinierte Klasse. Ich habe die einzige Verbraucherklasse exportiert, entfernt und neu geladen und das Problem wurde behoben.

Verwandte Themen