Σφάλμα χρόνου εκτέλεσης 1004: Η μέθοδος PasteSpecial της κλάσης Range απέτυχε

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

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

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

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

Μέθοδος PasteSpecial Failed.xlsm

Η μέθοδος PasteSpecial της κλάσης Range απέτυχε: Αιτίες και λύσεις

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

Λόγος 1: Πρόσβαση στη μέθοδο PasteSpecial χωρίς να αντιγράψετε τίποτα

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

Για να το καταλάβετε με σαφήνεια, ελέγξτε τα ακόλουθα VBA κωδικός.

⧭ Κώδικας VBA:

 Sub PasteSpecial_Method_of_Range_Class_Failed() Selection.PasteSpecial Paste:=xlFormulas, Operation:=xlNone, SkipBlanks:=False, Transpose:=False End Sub 

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

⧭ Λύση:

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

 Sub PasteSpecial_Method_of_Range_Class_Failed() Application.Range("B3:B5").Copy Selection.PasteSpecial Paste:=xlFormulas, Operation:=xlNone, SkipBlanks:=False, Transpose:=False End Sub 

Όταν εκτελείτε αυτόν τον κώδικα, θα επικολλήσει τους τύπους της περιοχής B3:B5 του ενεργού φύλλου εργασίας στην επιλεγμένη περιοχή.

Διαβάστε περισσότερα: Η μέθοδος PasteSpecial της κλάσης φύλλο εργασίας απέτυχε (Λόγοι και λύσεις)

Λόγος 2: Προσπέλαση της μεθόδου PasteSpecial με ορθογραφικό σφάλμα

Αυτός είναι ένας άλλος συνήθης λόγος πίσω από το σφάλμα. Δηλαδή, για να αποκτήσετε πρόσβαση στο PasteSpecial μέθοδος με ορθογραφικό(-ά) σφάλμα(-α) σε οποιοδήποτε όρισμα.

Κοιτάξτε τα εξής VBA Εδώ έχουμε κάνει ένα ορθογραφικό λάθος στο επιχείρημα xlPasteAll .

⧭ Κώδικας VBA:

 Sub PasteSpecial_Method_of_Range_Class_Failed() Application.Range("B3:B5").Copy Selection.PasteSpecial Paste:=xlPaseAll End Sub 

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

⧭ Λύση:

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

Και το σφάλμα θα εξαφανιστεί αυτόματα.

Διαβάστε περισσότερα: Πώς να χρησιμοποιήσετε την ειδική εντολή επικόλλησης στο Excel (5 κατάλληλοι τρόποι)

Παρόμοιες αναγνώσεις

  • Excel VBA: Αντιγραφή περιοχής σε άλλο βιβλίο εργασίας
  • Αντιγραφή και επικόλληση τιμών στην επόμενη κενή γραμμή με το Excel VBA (3 παραδείγματα)
  • Εφαρμογή του VBA PasteSpecial και διατήρηση της μορφοποίησης της πηγής στο Excel
  • Πώς να αντιγράψετε την ίδια τιμή σε πολλαπλά κελιά στο Excel (4 μέθοδοι)
  • Excel VBA για την αντιγραφή σειρών σε άλλο φύλλο εργασίας με βάση τα κριτήρια

Λόγος 3: Άνοιγμα νέου βιβλίου εργασίας μετά την αντιγραφή που ακυρώνει τη λειτουργία αντιγραφής/επικόλλησης

Αυτός είναι ένας άλλος σημαντικός λόγος πίσω από το σφάλμα. Δηλαδή, να κάνετε κάτι που ακυρώνει τη λειτουργία αντιγραφής/επικόλλησης πριν από την επικόλληση.

Κοιτάξτε τον ακόλουθο κώδικα για να τον κατανοήσετε με σαφήνεια.

⧭ Κώδικας VBA:

 Sub PasteSpecial_Method_of_Range_Class_Failed() Workbooks("Workbook1.xlsx").Worksheets("Sheet1").Range("B3:B5").Select Selection.Copy Dim Workbook2 As Workbook Set Workbook2 = Workbooks.Add Workbook2.SaveAs Filename:=ThisWorkbook.Path & "\" & "Workbook2.xlsx" Workbook2.Activate Workbook2.Unprotect Workbook2.Worksheets("Sheet1").Range("B3:B5").Select Selection.PasteSpecial Paste:=xlPasteAllEnd Sub 

Εδώ έχουμε αντιγράψει την περιοχή B3:B5 από το Φύλλο1 ενός βιβλίου εργασίας που ονομάζεται Βιβλίο εργασίας1 .

Στη συνέχεια δημιουργήσαμε ένα νέο βιβλίο εργασίας με όνομα Βιβλίο εργασίας2 στον ίδιο φάκελο και προσπάθησα να επικολλήσω την αντιγραμμένη περιοχή στην περιοχή B3:B5 του Φύλλο1 αυτού του βιβλίου εργασίας.

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

⧭ Λύση:

Για να λύσετε αυτό το πρόβλημα, καταγράψτε πρώτα τις γραμμές κώδικα για να δημιουργήσετε το νέο βιβλίο εργασίας με την ονομασία Βιβλίο εργασίας2 .

Στη συνέχεια, εισάγετε τις γραμμές για να ενεργοποιήσετε Βιβλίο εργασίας1 και αντιγράψτε το επιθυμητό εύρος από αυτό.

Και τέλος, ενεργοποιήστε Βιβλίο εργασίας2 και επικολλήστε εκεί την περιοχή που αντιγράψατε.

 Sub PasteSpecial_Method_of_Range_Class_Failed() Dim Workbook2 As Workbook Set Workbook2 = Workbooks.Add Workbook2.SaveAs Filename:=ThisWorkbook.Path & "\" & "Workbook2.xlsx" Workbooks("Workbook1.xlsx").Activate Worksheets("Sheet1").Range("B3:B5").Select Selection.Copy Workbook2.Activate Worksheets("Sheet1").Range("B3:B5").Select Selection.PasteSpecial Paste:=xlPasteAll End Sub 

Εκτελέστε αυτόν τον κώδικα. Θα αντιγράψει την περιοχή B3:B5 από το Φύλλο1 του Βιβλίο εργασίας1.

Και επικολλήστε το στο Φύλλο1 του νεοδημιουργηθέντος βιβλίου εργασίας με την ονομασία Βιβλίο εργασίας2 .

⧭ Προσοχή:

Προφανώς, μην ξεχνάτε να κρατάτε Βιβλίο εργασίας1 ανοιχτό κατά την εκτέλεση του κώδικα.

Διαβάστε περισσότερα: Πώς να απενεργοποιήσετε την Αντιγραφή και επικόλληση στο Excel χωρίς μακροεντολές (με 2 κριτήρια)

Λόγος 4: Μετατροπή του Application.CutCopyMode σε False που ακυρώνει τη λειτουργία αντιγραφής/επικόλλησης

Τέλος, μπορεί να υπάρχει και άλλος λόγος για να συμβεί το σφάλμα. Μπορούμε να απενεργοποιήσουμε το Application.CutCopyMode λανθασμένα πριν από την πρόσβαση στο PasteSpecial μέθοδος.

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

Δείτε τον παρακάτω κώδικα για να το καταλάβετε με σαφήνεια. Εδώ έχουμε αντιγράψει την περιοχή B3:B5 , αλλά ακύρωσε το CutCopyMode πριν το επικολλήσετε.

⧭ Κώδικας VBA:

 Sub PasteSpecial_Method_of_Range_Class_Failed() Range("B3:B5").Copy Application.CutCopyMode = False Range("D3:D5").PasteSpecial Paste:=xlPasteAll End Sub 

Όταν εκτελέσετε τον κώδικα, θα εμφανιστεί το Η μέθοδος PasteSpecial της κλάσης Range απέτυχε σφάλμα.

⧭ Λύση:

Υποθέτω ότι μέχρι τώρα όλοι έχετε μαντέψει τη λύση. Στην πραγματικότητα είναι αρκετά απλή. Απλά αφαιρέστε τη γραμμή από τον κώδικα που μετατρέπει το CutCopy απενεργοποίηση.

Έτσι, η σωστή VBA ο κωδικός θα είναι:

 Sub PasteSpecial_Method_of_Range_Class_Failed() Range("B3:B5").Copy Range("D3:D5").PasteSpecial Paste:=xlPasteAll End Sub 

Θα αντιγράψει το εύρος B3:B5 και επικολλήστε το πάνω από το D3:D5 χωρίς κανένα πρόβλημα.

Διαβάστε περισσότερα: Ειδική επικόλληση VBA για την αντιγραφή τιμών και μορφών στο Excel (9 παραδείγματα)

Πράγματα που πρέπει να θυμάστε

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

Συμπέρασμα

Έτσι, εν ολίγοις, αυτοί είναι οι λόγοι που μπορεί να προκαλέσουν την σφάλμα εκτέλεσης 1004: Η μέθοδος PasteSpecial της κλάσης Range απέτυχε στον κώδικά σας. Ελπίζω να καταλάβατε όλα τα σημεία με σαφήνεια και αυτά θα σας βοηθήσουν πολύ στο μέλλον. Γνωρίζετε άλλους λόγους; Και έχετε κάποιο πρόβλημα; Μη διστάσετε να μας ρωτήσετε. Και μην ξεχάσετε να επισκεφθείτε την ιστοσελίδα μας ExcelWIKI για περισσότερες αναρτήσεις και ενημερώσεις.

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