Σφάλμα αναντιστοιχίας τύπου VBA (παραδείγματα) | Πώς να επιδιορθώσετε το σφάλμα χρόνου εκτέλεσης 13;

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

Τι είναι το σφάλμα αναντιστοιχίας τύπου VBA;

Το VBA Type Mismatch Error in excel είναι ένας τύπος "Run Time Error" και είναι το νούμερο 13 σφάλμα σε αυτήν την κατηγορία.

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

Συνήθως δηλώνουμε μεταβλητές και τους αναθέτουμε τύπους δεδομένων. Όταν εκχωρούμε μια τιμή σε αυτές τις μεταβλητές, πρέπει να θυμόμαστε τι είδους δεδομένα μπορεί να διατηρήσει, εάν η τιμή που έχει εκχωρηθεί δεν είναι σύμφωνα με τον τύπο δεδομένων, θα λάβουμε το "Run Time Error 13: Type Mismatch".

Πώς να επιδιορθώσετε το σφάλμα VBA τύπου ακατάλληλου χρόνου εκτέλεσης 13;

Ας δούμε μερικά παραδείγματα για να κατανοήσουμε αυτό το σφάλμα αναντιστοιχίας τύπου VBA.

Μπορείτε να κατεβάσετε αυτό το πρότυπο VBA Type Mismatch Excel εδώ - Πρότυπο VBA Type Mismatch Excel

Αναντιστοιχία τύπου VBA - Παράδειγμα # 1

Για παράδειγμα, δείτε τον παρακάτω κώδικα VBA.

Κώδικας:

 Sub Type_MisMatch_Example1 () Dim k As Byte k = "Hiii" MsgBox k End Sub 

Έχω δηλώσει τη μεταβλητή "k" ως Byte.

Αυτό σημαίνει ότι η μεταβλητή "k" μπορεί να διατηρήσει τιμές από 0 έως 255. Αλλά στην επόμενη γραμμή, έχω εκχωρήσει την τιμή για τη μεταβλητή "k" ως "Hiii".

Είναι πολύ σαφές ότι ο τύπος δεδομένων δεν μπορεί να διατηρήσει την τιμή ενός κειμένου, οπότε έρχεται το Σφάλμα αναντιστοιχίας τύπου.

Αναντιστοιχία τύπου VBA - Παράδειγμα # 2

Τώρα ρίξτε μια ματιά σε ένα ακόμη παράδειγμα με διαφορετικό τύπο δεδομένων. Κοιτάξτε τον παρακάτω κώδικα.

Κώδικας:

 Sub Type_MisMatch_Example2 () Dim x As Boolean x = 4556 MsgBox x End Sub 

Έχουμε δηλώσει τη μεταβλητή "x" ως Boolean.

Το Boolean είναι ένας τύπος δεδομένων που μπορεί να διατηρήσει την τιμή είτε TRUE είτε FALSE.

Στον παραπάνω κώδικα, έχουμε εκχωρήσει μια τιμή 4556, η οποία δεν είναι σύμφωνα με τις τιμές τύπου δεδομένων TRUE ή FALSE.

Όταν εκτελούμε αυτόν τον κώδικα θα περιμένατε ένα σφάλμα αναντιστοιχίας τύπου, αλλά δείτε τι συμβαίνει όταν εκτελούμε αυτόν τον κώδικα.

Πρέπει να αναρωτιέστε γιατί αυτό δεν δίνει σφάλμα χρόνου εκτέλεσης 13 του σφάλματος αναντιστοιχίας τύπου.

Ο λόγος για αυτό είναι ότι το excel αντιμετωπίζει όλους τους αριθμούς ως Αληθινό εκτός από το μηδέν. Η μηδενική τιμή θα αντιμετωπίζεται ως FALSE. Αυτός είναι ο λόγος για τον οποίο έχουμε το αποτέλεσμα ως Αληθινό αντί για σφάλμα

Τώρα δείτε θα εκχωρήσω μια αριθμητική τιμή με κείμενο.

Κώδικας:

 Sub Type_MisMatch_Example2 () Dim x As Boolean x = "4556a" MsgBox x End Sub 

Αυτό σίγουρα θα ρίξει το σφάλμα χρόνου εκτέλεσης 13: Αναντιστοιχία τύπου.

Αναντιστοιχία τύπου VBA - Παράδειγμα # 3

Τώρα, δείτε τον παρακάτω κώδικα για αυτό το παράδειγμα.

Κώδικας:

 Sub Type_MisMatch_Example4 () Dim x As Integer Dim y As String x = 45 y = "2019 Jan" MsgBox x + y End Sub 

Η μεταβλητή "x" είναι ακέραιος τύπος δεδομένων και "y" είναι τύπος δεδομένων συμβολοσειράς.

X = 45 και y = 2019 Ιαν.

Στο πλαίσιο μηνύματος, έχω προσθέσει x + y.

Αλλά αυτός δεν είναι ο τέλειος κώδικας επειδή δεν μπορούμε να προσθέσουμε αριθμούς με κείμενα συμβολοσειράς. Θα συναντήσουμε το σφάλμα χρόνου εκτέλεσης 13.

Αναντιστοιχία τύπου VBA - Παράδειγμα # 4

Εξαιρετικές περιπτώσεις

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

Κώδικας:

 Sub Type_MisMatch_Example3 () Dim x As Long Dim y As Long x = 58.85 y = "85" MsgBox x & vbNewLine & y End Sub 

Δύο δηλωμένες μεταβλητές είναι "x" & "y".

Για αυτήν τη μεταβλητή, ο εκχωρημένος τύπος δεδομένων είναι "Long".

Ο μεγάλος τύπος δεδομένων δέχεται μόνο ακέραιους αριθμούς, όχι δεκαδικές τιμές.

Έτσι, η γενική αντίληψη είναι να λάβετε το σφάλμα χρόνου εκτέλεσης 13 του σφάλματος αναντιστοιχίας τύπου.

Αλλά ας δούμε τι συμβαίνει όταν εκτελούμε αυτόν τον κώδικα.

Ουάου!!! Έχουμε τις τιμές ως 59 & 85.

Αυτό συμβαίνει επειδή το VBA θα μετατρέψει την δεκαδική τιμή 58,85 στην πλησιέστερη ακέραια τιμή και παρόλο που οι αριθμοί περικλείονται με διπλά εισαγωγικά, μετατρέπεται μόνο στην ακέραια τιμή.