Αυτό το σεμινάριο θα σας δείξει πώς να χρησιμοποιήσετε το PasteSpecial στο VBA για να επικολλήσετε μόνο ορισμένες ιδιότητες κελιού (π.χ. τιμές, μορφές)
Στο Excel, όταν αντιγράφετε και επικολλάτε ένα κελί αντιγράφετε και επικολλάτε όλες τις ιδιότητες του κελιού: τιμές, μορφές, τύπους, μορφοποίηση αριθμών, περιθώρια κλπ:
Αντ 'αυτού, μπορείτε να "Επικολλήσετε Ειδικά" για να επικολλήσετε μόνο ορισμένες ιδιότητες κελιού. Στο Excel, μπορείτε να έχετε πρόσβαση στο μενού Επικόλληση Ειδικού με τη συντόμευση CTRL + ALT + V (μετά την αντιγραφή ενός κελιού):
Εδώ μπορείτε να δείτε όλους τους συνδυασμούς ιδιοτήτων κελιών που μπορείτε να επικολλήσετε.
Εάν καταγράφετε μια μακροεντολή ενώ χρησιμοποιείτε το Ειδικό μενού επικόλλησης, μπορείτε απλά να χρησιμοποιήσετε τον κωδικό που δημιουργήθηκε. Αυτός είναι συχνά ο ευκολότερος τρόπος χρήσης του VBA to Paste Special.
Επικόλληση τιμών
Επικόλληση τιμών επικολλά μόνο την "τιμή" κελιού. Εάν το κελί περιείχε έναν τύπο, οι τιμές επικόλλησης θα επικολλήσουν το αποτέλεσμα του τύπου.
Αυτός ο κώδικας θα αντιγράψει και θα επικολλήσει τιμές για ένα κελί στο ίδιο φύλλο εργασίας:
12 | Εύρος ("A1"). ΑντιγραφήΕύρος ("B1"). PasteSpecial Paste: = xlPasteValues |
Αντιγραφή και αξία επικόλλησης σε διαφορετικό φύλλο
Αυτό το παράδειγμα θα αντιγράψει και επικολλήσει τιμές για μεμονωμένα κελιά σε διαφορετικά φύλλα εργασίας
12 | Φύλλα ("Φύλλο1"). Εύρος ("Α1"). ΑντιγραφήΦύλλα ("Sheet2"). Range ("B1"). PasteSpecial Paste: = xlPasteValues |
Αυτά τα παραδείγματα θα αντιγράψουν και θα επικολλήσουν τιμές για μια σειρά κελιών:
Εύρος επικόλλησης αντιγραφής και αξίας
12 | Εύρος ("A1: B3"). ΑντιγραφήΕύρος ("C1"). PasteSpecial Paste: = xlPasteValues |
Αντίγραφο και τιμή επικόλλησης στηλών
12 | Στήλες ("Α"). ΑντιγραφήΣτήλες ("B"). PasteSpecial Paste: = xlPasteValues |
Αντίγραφο και τιμή επικόλλησης σειρών
12 | Σειρές (1). ΑντιγραφήΣειρές (2) .Επικόλληση ειδικής επικόλλησης: = xlPasteValues |
Επικόλληση τιμών και μορφών αριθμού
Η επικόλληση τιμών θα επικολλήσει μόνο την τιμή κελιού. Δεν έχει επικολληθεί καμία μορφοποίηση, συμπεριλαμβανομένης της μορφοποίησης αριθμών.
Συχνά, όταν επικολλάτε τιμές, πιθανότατα θα θέλετε να συμπεριλάβετε και τη μορφοποίηση αριθμών, ώστε οι τιμές σας να παραμείνουν μορφοποιημένες. Ας δούμε ένα παράδειγμα.
Εδώ θα εκτιμήσουμε την επικόλληση ενός κελιού που περιέχει ένα ποσοστό:
12 | Φύλλα ("Φύλλο1"). Στήλες ("Δ"). ΑντιγραφήΦύλλα ("Φύλλο2"). Στήλες ("Β"). Επικόλληση Ειδική επικόλληση: = xlPasteValues |
Παρατηρήστε πώς χάνεται η μορφοποίηση του ποσοστού αριθμών και αντ 'αυτού εμφανίζεται μια ατημέλητη δεκαδική τιμή.
Αντ 'αυτού, ας χρησιμοποιήσουμε μορφές επικόλλησης τιμών και αριθμών:
12 | Φύλλα ("Φύλλο1"). Στήλες ("Δ"). ΑντιγραφήΦύλλα ("Φύλλο2"). Στήλες ("Β"). Επικόλληση Ειδική επικόλληση: = xlPasteValuesAndNumberFormats |
Τώρα μπορείτε να δείτε ότι η μορφοποίηση αριθμών έχει επίσης επικολληθεί, διατηρώντας τη μορφή ποσοστού.
.Αξία αντί για .Πάστα
Αντί για επικόλληση τιμών, μπορείτε να χρησιμοποιήσετε την ιδιότητα Τιμή του αντικειμένου Εύρος:
Αυτό θα ορίσει την τιμή κελιού του Α2 ίση με την τιμή του κελιού του Β2
1 | Εύρος ("A2"). Τιμή = Εύρος ("B2"). Τιμή |
Μπορείτε επίσης να ορίσετε μια περιοχή κελιών ίση με την τιμή ενός κελιού:
1 | Εύρος ("A2: C5"). Τιμή = Εύρος ("A1"). Τιμή |
ή μια περιοχή κελιών ίση με μια άλλη κυψέλη με το ίδιο μέγεθος:
1 | Εύρος ("B2: D4"). Τιμή = Εύρος ("A1: C3"). Τιμή |
Είναι λιγότερο δακτυλογραφημένη η χρήση της ιδιότητας Value. Επίσης, εάν θέλετε να εξοικειωθείτε με το Excel VBA, θα πρέπει να είστε εξοικειωμένοι με την εργασία με την ιδιότητα Τιμή των κελιών.
Αξία κυψέλης έναντι ιδιοτήτων αξίας 2
Τεχνικά, είναι καλύτερο να χρησιμοποιήσετε την ιδιότητα Value2 ενός κελιού. Το Value2 είναι ελαφρώς γρηγορότερο (αυτό ισχύει μόνο για εξαιρετικά μεγάλους υπολογισμούς) και η ιδιότητα Value ενδέχεται να σας δώσει ένα περικομμένο αποτέλεσμα του κελιού να διαμορφώνεται ως νόμισμα ή ως ημερομηνία. Ωστόσο, το 99%+ του κώδικα που έχω δει χρησιμοποιεί .Value και όχι .Value2. Προσωπικά δεν χρησιμοποιώ το .Value2, αλλά θα πρέπει να γνωρίζετε ότι υπάρχει.
1 | Εύρος ("A2"). Value2 = Range ("B2"). Value2 |
Αντιγραφή Επικόλλησης δημιουργού
Δημιουργήσαμε ένα "Copy Paste Code Builder" που διευκολύνει τη δημιουργία κώδικα VBA για αντιγραφή (ή κοπή) και επικόλληση κελιών. Ο οικοδόμος είναι μέρος του δικού μας Πρόσθετο VBA: AutoMacro.
AutoMacro περιέχει επίσης πολλά άλλα Γεννήτριες κώδικα, μια εκτεταμένη Βιβλιοθήκη κωδικών, και ισχυρό Εργαλεία κωδικοποίησης.
Επικόλληση ειδικών - Μορφές και τύποι
Εκτός από τις τιμές επικόλλησης, οι πιο συνηθισμένες επιλογές ειδικής επικόλλησης είναι οι μορφές επικόλλησης και οι τύποι επικόλλησης
Επικόλληση μορφών
Η επικόλληση μορφών σάς επιτρέπει να επικολλήσετε όλη τη μορφοποίηση κελιών.
12 | Εύρος ("A1: A10"). ΑντιγραφήΕύρος ("B1: B10"). PasteSpecial Paste: = xlPasteFormats |
Επικόλληση τύπων
Η επικόλληση τύπων θα επικολλήσει μόνο τους τύπους κελιών. Αυτό είναι επίσης εξαιρετικά χρήσιμο εάν θέλετε να αντιγράψετε τύπους κελιών, αλλά δεν θέλετε να αντιγράψετε χρώματα φόντου κελιού (ή άλλη μορφοποίηση κελιών).
12 | Εύρος ("A1: A10"). ΑντιγραφήΕύρος ("B1: B10"). PasteSpecial Paste: = xlPasteFormulas |
Επικόλληση τύπων και μορφών αριθμών
Παρόμοια με την επικόλληση τιμών και μορφών αριθμού παραπάνω, μπορείτε επίσης να αντιγράψετε και να επικολλήσετε μορφές αριθμών μαζί με τύπους
Εδώ θα αντιγράψουμε έναν τύπο κελιού μόνο με τη Μορφοποίηση αριθμού λογαριασμού και την επικόλληση τύπων.
12 | Φύλλα ("Φύλλο1"). Εύρος ("D3"). ΑντιγραφήΦύλλα ("Sheet2"). Range ("D3"). PasteSpecial xlPasteFormulas |
Παρατηρήστε πώς χάνεται η μορφοποίηση αριθμών και αντ 'αυτού εμφανίζεται μια ατημέλητη μη στρογγυλεμένη τιμή.
Αντ 'αυτού ας χρησιμοποιήσουμε Επικόλληση τύπων και μορφών αριθμών:
12 | Φύλλα ("Φύλλο1"). Εύρος ("D3"). ΑντιγραφήΦύλλα ("Φύλλο2"). Εύρος ("D3"). Επικόλληση Ειδικών |
Τώρα μπορείτε να δείτε ότι η μορφοποίηση αριθμών έχει επίσης επικολληθεί, διατηρώντας τη μορφή Λογιστικής.
Επικόλληση ειδικού - Μεταφορά και παράλειψη κενών
Επικόλληση Ειδικού - Μεταφορά
Επικόλληση ειδικής μεταφοράς σας επιτρέπει να αντιγράψετε και να επικολλήσετε κελιά αλλάζοντας τον προσανατολισμό από πάνω προς τα κάτω προς τα αριστερά-δεξιά (ή αντίστροφα):
12 | Φύλλα ("Sheet1"). Εύρος ("A1: A5"). ΑντιγραφήΦύλλα ("Φύλλο1"). Εύρος ("Β1"). Επικόλληση Ειδικής μεταφοράς: = Αληθές |
Επικόλληση ειδικής - Παράλειψη κενών
Η παράλειψη κενών είναι μια ειδική επιλογή πάστας που δεν φαίνεται να χρησιμοποιείται τόσο συχνά όσο θα έπρεπε. Σας επιτρέπει να αντιγράφετε μόνο μη κενά κελιά κατά την αντιγραφή και επικόλληση. Άρα τα κενά κελιά δεν αντιγράφονται.
Σε αυτό το παράδειγμα παρακάτω. Θα αντιγράψουμε τη στήλη Α, θα κάνουμε μια κανονική επικόλληση στη στήλη Β και θα παραλείψουμε τα κενά επικόλλησης στη στήλη Γ. Μπορείτε να δείτε ότι τα κενά κελιά δεν επικολλήθηκαν στη στήλη Γ στην παρακάτω εικόνα.
123 | Φύλλα ("Sheet1"). Εύρος ("A1: A5"). ΑντιγραφήΦύλλα ("Φύλλο1"). Εύρος ("Β1"). Επικόλληση Ειδικών παραλείψεων κενών: = ΛάθοςΦύλλα ("Sheet1"). Εύρος ("C1"). PasteSpecial SkipBlanks: = True |
Άλλες ειδικές επιλογές επικόλλησης
Επικόλληση Ειδικού - Σχόλια
1 | Φύλλα ("Sheet1"). Range ("A1"). Copy Sheets ("Sheet1"). Range ("E1"). PasteSpecial xlPasteComments |
Επικόλληση Ειδικού - Επικύρωση
12 | Φύλλα ("Sheet1"). Εύρος ("A1: A4"). ΑντιγραφήΦύλλα ("Sheet1"). Range ("B1: B4"). PasteSpecial xlPasteValidation |
Επικόλληση ειδικού - Όλα χρησιμοποιώντας θέμα πηγής
123 | Τετράδια εργασίας (1). Φύλλα ("Φύλλο1"). Εύρος ("A1: A2"). ΑντιγραφήΤετράδια εργασίας (2). Φύλλα ("Φύλλο1"). Εύρος ("Α1"). Επικόλληση ΕιδικούΤετράδια εργασίας (2). Φύλλα ("Φύλλο1"). Εύρος ("Β1"). Επικόλληση Ειδικού xlPasteAllUsingSourceTheme |
Επικόλληση ειδικού - Όλα εκτός από τα σύνορα
123 | Εύρος ("B2: C3"). ΑντιγραφήΕύρος ("E2"). PasteSpecialΕύρος ("H2"). Επικόλληση Ειδικών xlPasteAllExceptBorders |
PasteSpecial - Πλάτη στήλης
Ένα προσωπικό μου αγαπημένο. Το PasteSpecial Column Widths αντιγράφει και επικολλά το πλάτος των στηλών.
123 | Εύρος ("A1: A2"). ΑντιγραφήΕύρος ("C1"). PasteSpecialΕύρος ("E1"). PasteSpecial xlPasteColumnWidths |
PasteSpecial - Όλες οι μορφές MergingConditionalFormats
123 | Εύρος ("A1: A4"). ΑντιγραφήΕύρος ("C1"). PasteSpecialRange ("E1"). PasteSpecial xlPasteAllMergingConditionalFormats |