Sommario
Uno degli errori più comuni che ci troviamo ad affrontare quando lavoriamo con VBA in Excel è che il tipo definito dall'utente non è definito. In questo articolo vi mostrerò il motivo di questo errore e come risolverlo.
Scarica il quaderno di esercizi
Scaricate questo quaderno di esercizi per esercitarvi durante la lettura di questo articolo.
Tipo definito dall'utente Non definito.xlsm2 Cause e soluzioni per Tipo definito dall'utente non definito in Excel VBA
Ci sono 2 I principali problemi che stanno alla base di questo errore frequente in Excel VBA Esploriamoli in dettaglio e scopriamo i modi per risolverli.
1. Errore ortografico nella dichiarazione delle variabili
Questo è il motivo principale di questo errore. La maggior parte delle volte, l'errore "Tipo definito dall'utente non definito". è dovuto a un errore di ortografia nella dichiarazione delle variabili.
Osservate le seguenti righe di codice.
Sub User_Defined_Type_not_Defined() Dim Name As Strng Name = "ExcelWIKI" MsgBox Name End Sub
Se si esegue questo codice, si otterrà una casella di errore che segnala la presenza dell'errore "Tipo definito dall'utente non definito". Insieme ad esso, troverete la seconda riga del codice evidenziata in blu, dove ho scritto "strng" al posto di "stringa" .
Spero che tu abbia capito il senso. VBA non ha riconosciuto il tipo di variabile "strng" per questo motivo la considera come un nuovo tipo di variabile e pensa che sia stata definita da qualche parte, ma quando scopre che non è stata dichiarata da nessuna parte, solleva un errore.
Pertanto, durante l'esecuzione di semplici VBA Se si riscontra comunque questo errore, controllare innanzitutto l'ortografia dei tipi di variabile.
2. Mancanza di riferimenti adeguati
La causa di questo errore è un'altra: la mancanza di riferimenti corretti. A volte utilizziamo alcuni oggetti nei nostri codici che necessitano di riferimenti corretti da parte di Casella di riferimento di Visual Basic . Altrimenti, VBA non riconosce l'oggetto.
Si veda quanto segue VBA codice.
Sub User_Defined_Type_not_Defined() Dim MyDictionary As Dictionary Set MyDictionary = CreateObject("Scripting.Dictionary") End Sub
Eseguite questo codice. Otterrete lo stesso vecchio errore "Tipo definito dall'utente non definito", evidenziando il Oggetto del dizionario Questo perché VBA non riusciva a riconoscere il Oggetto del dizionario e la considera come una variabile definita dall'utente, che non è stata definita erroneamente.
Ora la domanda più grande è: come risolvere questo errore? Facile. Ci sono 2 modi per risolvere questo errore.
⧪ Soluzione 1: Controllo del riferimento al prerequisito dalla casella di riferimento di Visual Box
Questo è il modo più intelligente per risolvere il problema: andare alla sezione Strumenti> Riferimenti nella sezione Visual Basic nastro. Fare clic su Riferimenti .
Una finestra di dialogo chiamata Riferimenti Si aprirà la pagina. Scorrere e trovare Runtime di scripting Microsoft (Questo dipende dall'oggetto che si sta utilizzando. L'opzione Oggetto del dizionario esigenze Runtime di scripting Microsoft Quindi, mentre si utilizza un oggetto in un VBA è necessario conoscere il suo prerequisito per essere riconosciuto da VBA. Per maggiori informazioni, visitate questo link). Controllate.
Ora tornate a eseguire il codice e non otterrete alcun errore. Perché VBA può riconoscere il Oggetto del dizionario questa volta.
⧪ Soluzione 2: dichiararlo come oggetto puro anziché come oggetto specifico
C'è un altro modo per risolvere questo problema: si può dichiarare l'oggetto come oggetto puro, piuttosto che come oggetto Oggetto del dizionario .
Notate le seguenti righe di codice.
Sub User_Defined_Type_not_Defined() Dim MyDictionary As Object Set MyDictionary = CreateObject("Scripting.Dictionary") End Sub
Qui ho dichiarato la variabile Il mio dizionario come un semplice oggetto, non un Dizionario. Se si esegue questo codice, non si otterrà alcun errore.