Table des matières
L'une des erreurs les plus courantes auxquelles nous sommes confrontés lorsque nous travaillons avec des produits de l'Union européenne. VBA Dans cet article, je vais vous montrer pourquoi cette erreur est provoquée et comment la résoudre.
Télécharger le cahier d'exercices
Téléchargez ce cahier d'exercices pour vous entraîner pendant que vous lisez cet article.
Type défini par l'utilisateur non défini.xlsm2 Causes et solutions pour Type défini par l'utilisateur non défini dans Excel VBA
Il y a 2 les principaux problèmes à l'origine de cette erreur fréquemment rencontrée dans Excel VBA Explorons-les en détail et trouvons les moyens de les résoudre.
1. erreur d'orthographe lors de la déclaration des variables
C'est la raison principale de cette erreur. La plupart du temps, l'erreur "Type non défini par l'utilisateur" est due à une erreur d'orthographe lors de la déclaration des variables.
Regardez les lignes de codes suivantes.
Sub User_Defined_Type_not_Defined() Dim Name As Strng Name = "ExcelWIKI" MsgBox Name End Sub
Si vous exécutez ce code, vous obtiendrez une boîte d'erreur vous informant de la présence de l'erreur "Type non défini par l'utilisateur". Avec cela, vous trouverez la deuxième ligne du code surlignée en bleu, où j'ai écrit "strng" à la place de "string" .
J'espère que vous avez compris. VBA n'a pas pu reconnaître le type de variable "strng" C'est pourquoi il l'a considéré comme un nouveau type de variable et a pensé que vous l'aviez défini quelque part. Mais lorsqu'il a constaté que vous ne l'aviez déclaré nulle part, il a émis une erreur.
Par conséquent, tout en exécutant de simples VBA codes, si vous rencontrez quand même cette erreur, vérifiez d'abord toutes les orthographes de vos types de variables.
2. l'absence de référencement correct
Il y a une autre cause derrière cette erreur. C'est un manque de référencement approprié. Parfois, nous utilisons certains objets dans nos codes qui ont besoin d'un référencement approprié à partir de la base de données de l'entreprise. Boîte de référence Visual Basic . autrement, VBA ne reconnaît pas l'objet.
Regardez ce qui suit VBA code.
Sub User_Defined_Type_not_Defined() Dim MyDictionary As Dictionary Set MyDictionary = CreateObject("Scripting.Dictionary") End Sub
Exécutez ce code. Vous obtiendrez la même erreur. "Type non défini par l'utilisateur", en mettant en évidence le Objet du dictionnaire C'est parce que VBA ne pouvait pas reconnaître le Objet du dictionnaire et l'a considéré comme une variable définie par l'utilisateur, qui n'a pas été définie par erreur.
Maintenant, la grande question est de savoir comment résoudre cette erreur. Facile. Il y a 2 des moyens de résoudre cette erreur.
⧪ Solution 1 : vérification de la référence du prérequis à partir de la boîte de référence de la boîte visuelle.
La façon la plus intelligente de résoudre ce problème est d'aller dans la section Outils> ; Références dans la section Visual Basic Ruban. Cliquez sur Références .
Une boîte de dialogue appelée Références s'ouvrira. Faites défiler et trouvez Microsoft Scripting Runtime (Cela dépend de l'objet que vous utilisez. L' Objet du dictionnaire besoins Microsoft Scripting Runtime pour être reconnu. Ainsi, lors de l'utilisation d'un objet dans une VBA vous devez connaître les conditions préalables pour être reconnu par l'Office. VBA. Visitez ce lien pour plus d'informations.). Vérifiez-le.
Maintenant, revenez et exécutez le code. Vous n'aurez pas d'erreurs. Parce que... VBA peut reconnaître le Objet du dictionnaire cette fois-ci.
⧪ Solution 2 : le déclarer comme un objet pur plutôt que comme un objet spécifique.
Il existe un autre moyen de résoudre ce problème : vous pouvez déclarer l'objet en tant qu'objet pur, plutôt qu'en tant qu'objet de type Objet du dictionnaire .
Notez les lignes de codes suivantes.
Sub User_Defined_Type_not_Defined() Dim MyDictionary As Object Set MyDictionary = CreateObject("Scripting.Dictionary") End Sub
Ici, j'ai déclaré la variable MyDictionary comme un simple objet, et non un Dictionnaire. Maintenant, si vous exécutez ce code, vous n'obtiendrez pas d'erreur.