: Τύπος που ορίζεται από τον χρήστη δεν έχει οριστεί στο Excel VBA (2 γρήγορες λύσεις)

  • Μοιραστείτε Αυτό
Hugh West

Ένα από τα πιο συνηθισμένα λάθη που αντιμετωπίζουμε ενώ δουλεύουμε με VBA στο Excel είναι ότι ο τύπος που ορίζεται από τον χρήστη δεν έχει οριστεί. Σε αυτό το άρθρο, θα σας δείξω γιατί προκαλείται αυτό το σφάλμα και πώς να λύσετε αυτό το σφάλμα.

Κατεβάστε το βιβλίο ασκήσεων

Κατεβάστε αυτό το τετράδιο ασκήσεων για να εξασκηθείτε ενώ διαβάζετε αυτό το άρθρο.

Τύπος που καθορίζεται από τον χρήστη Not Defined.xlsm

2 Αιτίες και λύσεις για Τύπος που ορίζεται από τον χρήστη δεν ορίζεται στο Excel VBA

Υπάρχουν 2 σημαντικά ζητήματα που κρύβονται πίσω από αυτό το συχνά εμφανιζόμενο σφάλμα στο Excel VBA . Ας τις εξερευνήσουμε λεπτομερώς και ας βρούμε τους τρόπους επίλυσής τους.

1. Ορθογραφικό σφάλμα κατά τη δήλωση μεταβλητών

Αυτός είναι ο κύριος λόγος πίσω από αυτό το σφάλμα. Τις περισσότερες φορές, το σφάλμα "Τύπος που ορίζεται από τον χρήστη δεν έχει οριστεί" οφείλεται σε ορθογραφικό λάθος κατά τη δήλωση μεταβλητών.

Κοιτάξτε τις ακόλουθες γραμμές κώδικα.

 Sub User_Defined_Type_not_Defined() Dim Name As Strng Name = "ExcelWIKI" MsgBox Name End Sub 

Αν εκτελέσετε αυτόν τον κώδικα, θα εμφανιστεί ένα πλαίσιο σφάλματος που θα σας ενημερώνει για την παρουσία του σφάλματος "Τύπος που ορίζεται από τον χρήστη δεν έχει οριστεί". Μαζί με αυτό, θα βρείτε τη δεύτερη γραμμή του κώδικα με μπλε χρώμα, όπου έγραψα "strng" στη θέση του "string" .

Ελπίζω να καταλάβατε το νόημα. VBA δεν μπόρεσε να αναγνωρίσει τον τύπο της μεταβλητής "strng" , γι' αυτό και την θεώρησε ως νέο τύπο μεταβλητής και νόμιζε ότι την είχατε ορίσει κάπου. Όταν όμως διαπίστωσε ότι δεν την είχατε δηλώσει πουθενά, έβγαλε σφάλμα.

Επομένως, κατά την εκτέλεση απλών VBA κώδικες, αν παρ' όλα αυτά αντιμετωπίσετε αυτό το σφάλμα, ελέγξτε πρώτα την ορθογραφία όλων των τύπων μεταβλητών σας.

2. Έλλειψη σωστής αναφοράς

Αυτή είναι μια άλλη αιτία πίσω από αυτό το σφάλμα. Αυτή είναι η έλλειψη σωστής παραπομπής. Μερικές φορές χρησιμοποιούμε κάποια αντικείμενα στους κώδικες μας που χρειάζονται σωστή παραπομπή από το Πλαίσιο αναφοράς Visual Basic ...αλλιώς, VBA δεν αναγνωρίζει το αντικείμενο.

Κοιτάξτε τα εξής VBA κωδικός.

 Sub User_Defined_Type_not_Defined() Dim MyDictionary As Dictionary Set MyDictionary = CreateObject("Scripting.Dictionary") End Sub 

Εκτελέστε αυτόν τον κώδικα. Θα λάβετε το ίδιο παλιό σφάλμα "Τύπος που ορίζεται από τον χρήστη δεν έχει οριστεί", τονίζοντας το Αντικείμενο λεξικού Αυτό οφείλεται στο γεγονός ότι VBA δεν μπορούσε να αναγνωρίσει το Αντικείμενο λεξικού , και τη θεωρήσαμε ως μεταβλητή που έχει οριστεί από το χρήστη, η οποία δεν έχει οριστεί λανθασμένα.

Τώρα το μεγαλύτερο ερώτημα είναι, πώς να λύσετε αυτό το σφάλμα; Εύκολα. Υπάρχουν 2 τρόποι επίλυσης αυτού του σφάλματος.

⧪ Λύση 1: Έλεγχος της προαπαιτούμενης αναφοράς από το πλαίσιο αναφοράς του οπτικού πλαισίου

Αυτός είναι ο πιο έξυπνος τρόπος για να λύσετε αυτό το πρόβλημα. Πηγαίνετε στο Εργαλεία> Αναφορές στο κουμπί Visual Basic Κορδέλα. Κάντε κλικ στο Αναφορές .

Ένα παράθυρο διαλόγου που ονομάζεται Αναφορές θα ανοίξει. Μετακινηθείτε και βρείτε Χρόνος εκτέλεσης σεναρίων της Microsoft (Αυτό εξαρτάται από το αντικείμενο που χρησιμοποιείτε. Αντικείμενο λεξικού χρειάζεται Χρόνος εκτέλεσης σεναρίων της Microsoft να αναγνωριστεί. Έτσι, κατά τη χρήση ενός αντικειμένου σε ένα VBA κώδικα, πρέπει να γνωρίζετε την προϋπόθεση για να αναγνωριστεί από το VBA. Επισκεφθείτε αυτόν τον σύνδεσμο για περισσότερες πληροφορίες.).

Τώρα επιστρέψτε και εκτελέστε τον κώδικα. Δεν θα λάβετε κανένα σφάλμα. VBA μπορεί να αναγνωρίσει το Αντικείμενο λεξικού αυτή τη φορά.

⧪ Λύση 2: Δηλώνοντας το ως καθαρό αντικείμενο και όχι ως συγκεκριμένο αντικείμενο

Υπάρχει ένας άλλος τρόπος για να λύσετε αυτό το πρόβλημα. Μπορείτε να δηλώσετε το αντικείμενο ως ένα καθαρό αντικείμενο, αντί για ένα Αντικείμενο λεξικού .

Παρατηρήστε τις ακόλουθες γραμμές κώδικα.

 Sub User_Defined_Type_not_Defined() Dim MyDictionary As Object Set MyDictionary = CreateObject("Scripting.Dictionary") End Sub 

Εδώ έχω δηλώσει τη μεταβλητή MyDictionary ως απλό αντικείμενο, όχι ως Λεξικό. Τώρα, αν εκτελέσετε αυτόν τον κώδικα, δεν θα λάβετε κανένα σφάλμα.

Ο Hugh West είναι ένας εξαιρετικά έμπειρος εκπαιδευτής και αναλυτής του Excel με πάνω από 10 χρόνια εμπειρίας στον κλάδο. Είναι κάτοχος πτυχίου Λογιστικής και Χρηματοοικονομικής και μεταπτυχιακού στη Διοίκηση Επιχειρήσεων. Ο Hugh έχει πάθος για τη διδασκαλία και έχει αναπτύξει μια μοναδική προσέγγιση διδασκαλίας που είναι εύκολο να ακολουθηθεί και να κατανοηθεί. Οι εξειδικευμένες γνώσεις του στο Excel έχουν βοηθήσει χιλιάδες φοιτητές και επαγγελματίες παγκοσμίως να βελτιώσουν τις δεξιότητές τους και να διαπρέψουν στην καριέρα τους. Μέσω του ιστολογίου του, ο Hugh μοιράζεται τις γνώσεις του με τον κόσμο, προσφέροντας δωρεάν μαθήματα Excel και διαδικτυακή εκπαίδευση για να βοηθήσει άτομα και επιχειρήσεις να αξιοποιήσουν πλήρως τις δυνατότητές τους.