Excel VBA Compiler lance un “type défini par l'Utilisateur non défini” erreur, mais ne goto ligne de code malveillant

Symptômes

C'est un problème spécifiquement lors de la compilation d'un Excel VBA projet. L'erreur suivante se produit:

User-defined type not defined

Cependant, le code qui génère cette erreur n'est pas mis en évidence par le compilateur et donc je ne peut pas identifier le problème.

Ce que je sais déjà et ont essayé de

C'est un "type défini par l'Utilisateur non défini" l'erreur que j'ai vu avant, avec des questions simples, telles que nommer quelque chose As Strig au lieu de As String. Cependant, cette erreur est seulement surgissent au cours de la Debug > Compile VBAProject option de menu et lorsque le message d'erreur apparaît et il n'est pas en surbrillance la ligne de code que l'erreur est présente dans.

Après beaucoup de recherches, j'ai trouvé que ce bug peut être liée à l'absence de références et j'ai décrété ce que j'ai compris toutes les références nécessaires boîte à outils et les objets.

Pour s'assurer que je n'étais pas en manque un évident manque Dim déclarations, j'ai ajouté Option Explicit à toutes les pages de code (formulaires inclus) pour s'assurer que rien ne manquait. L'erreur s'affiche encore lors de l'exécution de la compilation.

Il y a aussi ce bug connu que les états de la question a été connu pour se produire en raison de la VB6 projets à l'aide de la compatibilité binaire:

Désactiver la Compatibilité Binaire et compiler le projet. Visual Basic
met en surbrillance la ligne de code qui contient le Type Défini par l'Utilisateur
qui n'est pas défini. Après la résolution du problème, la Compatibilité Binaire
peut-être tourné le dos.

J'ai trouvé cet article via ce La Question et la Réponse, cependant, je ne trouve pas cette option dans le standard d'Excel VBA éditeur.

Aider à sauver la mienne et celle des autres, la folie!

Je sais de recherches de Google et d'autres questions que je ne suis pas le seul qui a eu ce problème.

J'ai essayé d'aller dans le code manuellement mais il ya tout simplement trop beaucoup de lignes pour pouvoir le faire.

Est-il un moyen de désactiver la Compatibilité Binaire dans Excel VBA projets? Comment trouver cette ligne de code malveillant s'ils ne peuvent pas débogage pour ce qu'ils ont besoin de changer? Toute aide serait belle!

Vous en remercie d'avance.

Edit: j'ai trouvé la ligne de code malveillant et si mon problème est résolu Le problème est toujours là après la suppression de cette ligne - c'était un mispelt nom de contrôle sur un formulaire référencé dans son code. Ce n'est toujours pas résolu la question de la façon dont vous allez sur la recherche de ce code incriminé était la question. Sommes-nous en mesure de trouver un bon moyen de trouver le code fautif lorsque ce bug se produit tellement d'autres dans l'avenir pouvez éviter cette agonie?

Mettre Option Explicit sur le dessus de chaque éditeur de code et ensuite essayer Debug > Compile VBAProject de nouveau. De la ligne fautive?
malheureusement non, j'ai Option Explicit sur chaque page de code (formulaires inclus) et résolu toutes les questions concrètes. Après l'achèvement de chaque Dim bla comme blah_Type j'ai toujours eu la même User-defined erreur. (L'édition de ma Question pour montrer que j'ai fait.)
Probablement la meilleure chose à faire est de commenter l'ensemble de votre code et de voir si ça compile. Ensuite, étape par étape, décommentez les sections de lui jusqu'à ce que vous tomber sur la ligne fautive. Un peu de travail dans un projet de grande envergure, mais au moins, ça va vous prendre pour le problème...
Aha! J'ai trouvé le code fautif - c'était un mal nommée le nom de contrôle dans l'une des formes cependant la comiler n'était pas toujours en mesure de trouver la ligne de code malveillant, même quand j'ai testé l'erreur - c'est quelque chose que nous devons trouver une solution viable...
vous pourriez avoir exporté vos modules sous forme de texte ou de le copier coller dans notepad++ et enregistrer en tant que TXT. Ensuite, à l'aide de VBA par exemple le processus de chaque module de TXT et de regarder pour Dim <variableName>. Retrouvez tous les Dim lignes et ensuite l'imprimer sur feuille et passer à travers eux . Si ils ont la deuxième partie as <VariableType> ensuite, vous pouvez parcourir tous ceux vérification de leur TYPES. Si le type existe ensuite passer à côté si ça ne marche pas, alors là vous allez!

OriginalL'auteur Tom 'Blue' Piddock | 2013-10-30