VBA Value Paste & PasteSpecial

Αυτό το σεμινάριο θα σας δείξει πώς να χρησιμοποιήσετε το 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

wave wave wave wave wave