Αυτό το σεμινάριο θα εξηγήσει το σφάλμα VBA 1004- Σφάλμα που ορίζεται από την εφαρμογή ή ορίζεται από αντικείμενο.
Το σφάλμα χρόνου εκτέλεσης VBA 1004 είναι γνωστό ως σφάλμα που ορίζεται από την εφαρμογή ή ορίζεται από αντικείμενο, το οποίο παρουσιάζεται κατά την εκτέλεση του κώδικα. Η λήψη σφαλμάτων κωδικοποίησης (ανατρέξτε στον Οδηγό χειρισμού σφαλμάτων) αποτελεί αναπόσπαστο κομμάτι της εκμάθησης του VBA, αλλά το να γνωρίζετε γιατί συμβαίνει ένα σφάλμα σας βοηθά να αποφύγετε σφάλματα στη μελλοντική κωδικοποίηση.
Σφάλμα VBA 1004 - Το αντικείμενο δεν υπάρχει
Εάν αναφερόμαστε σε ένα αντικείμενο στον κωδικό μας, όπως ένα όνομα εύρους που δεν έχει οριστεί, τότε αυτό το σφάλμα μπορεί να προκύψει καθώς ο κώδικας VBA δεν θα μπορεί να βρει το όνομα.
12345678 | Sub CopyRange ()Dim CopyFrom As RangeDim CopyTo As RangeΟρισμός CopyFrom = Φύλλα (1). Εύρος ("CopyFrom")Set CopyTo = Sheets (1) .Range ("CopyTo")CopyFrom.CopyCopyTo.PasteSpecial xlPasteValuesΤέλος υπο |
Το παραπάνω παράδειγμα θα αντιγράψει τις τιμές από την ονομαζόμενη περιοχή "CopyFrom" στην ονομαζόμενη περιοχή "CopyTo" - υπό την προϋπόθεση φυσικά ότι αυτές είναι υπάρχουσες ονομαστικές περιοχές! Εάν δεν υπάρχουν, τότε θα εμφανιστεί το Σφάλμα 1004.
Ο απλούστερος τρόπος για να αποφύγετε αυτό το σφάλμα στο παραπάνω παράδειγμα είναι να δημιουργήσετε τα ονόματα εύρους στο βιβλίο εργασίας του Excel ή να ανατρέξετε στο εύρος στην παραδοσιακή μορφή γραμμής και στήλης, π.χ. Εύρος ("A1: A10").
Σφάλμα VBA 1004 - Όνομα έχει ήδη ληφθεί
Το σφάλμα μπορεί επίσης να προκύψει εάν προσπαθείτε να μετονομάσετε ένα αντικείμενο σε ένα αντικείμενο που υπάρχει ήδη - για παράδειγμα εάν προσπαθούμε να μετονομάσουμε το Sheet1 αλλά το όνομα που δίνετε στο φύλλο είναι ήδη το όνομα ενός άλλου φύλλου.
123 | Υπο Όνομα Φύλλο εργασίας ()ActiveSheet.Name = "Φύλλο2"Τέλος υπο |
Εάν έχουμε ήδη ένα Sheet2, τότε θα εμφανιστεί το σφάλμα.
Σφάλμα VBA 1004 - Λανθασμένη αναφορά σε ένα αντικείμενο
Το σφάλμα μπορεί επίσης να προκύψει όταν έχετε αναφέρει εσφαλμένα ένα αντικείμενο στον κώδικά σας. Για παράδειγμα:
12345678 | Sub CopyRange ()Dim CopyFrom As RangeDim CopyTo As RangeΟρισμός CopyFrom = Εύρος ("A1: A10")Ορισμός CopyTo = Εύρος ("C1: C10")Εύρος (CopyFrom). ΑντιγραφήΕύρος (CopyTo) .PasteSpecial xlPasteValuesΤέλος υπο |
Αυτό θα μας δώσει για άλλη μια φορά το Σφάλμα 10004
Διορθώστε τον κωδικό και το σφάλμα δεν θα εμφανίζεται πλέον.
12345678 | Sub CopyRange ()Dim CopyFrom As RangeDim CopyTo As RangeΟρισμός CopyFrom = Εύρος ("A1: A10")Ορισμός CopyTo = Εύρος ("C1: C10")CopyFrom.CopyCopyTo.PasteSpecial xlPasteValuesΤέλος υπο |
Σφάλμα VBA 1004 - Το αντικείμενο δεν βρέθηκε
Αυτό το σφάλμα μπορεί επίσης να προκύψει όταν προσπαθούμε να ανοίξουμε ένα βιβλίο εργασίας και το βιβλίο εργασίας δεν βρίσκεται - το βιβλίο εργασίας σε αυτήν την περίπτωση είναι το αντικείμενο που δεν βρίσκεται.
1234 | Υπο OpenFile ()Dim wb Ως βιβλίο εργασίαςΡύθμιση wb = Workbooks.Open ("C: \ Data \ TestFile.xlsx")Τέλος υπο |
Αν και το μήνυμα θα είναι διαφορετικό στο πλαίσιο σφάλματος, το σφάλμα εξακολουθεί να είναι 1004.