Αυτό το σεμινάριο θα σας διδάξει πώς να δημιουργείτε τύπους κυττάρων χρησιμοποιώντας VBA.
Τύποι σε VBA
Χρησιμοποιώντας το VBA, μπορείτε να γράψετε τύπους απευθείας σε Ranges ή Cells στο Excel. Μοιάζει με αυτό:
123456789 | Sub Formula_Example ()«Αντιστοιχίστε έναν σκληρό κωδικοποιημένο τύπο σε ένα κελίΕύρος ("b3"). Τύπος = "= b1+b2"«Εκχωρήστε έναν ευέλικτο τύπο σε μια σειρά κελιώνΕύρος ("d1: d100"). ΤύποςR1C1 = "= RC2+RC3"Τέλος υπο |
Υπάρχουν δύο ιδιότητες Range που πρέπει να γνωρίζετε:
- .Τύπος - Δημιουργεί έναν ακριβή τύπο (σκληρές κωδικοποιημένες αναφορές κελιών). Καλό για την προσθήκη ενός τύπου σε ένα κελί.
- .FormulaR1C1 - Δημιουργεί μια ευέλικτη φόρμουλα. Καλό για την προσθήκη τύπων σε μια περιοχή κελιών όπου οι αναφορές κελιών θα πρέπει να αλλάξουν.
Για απλούς τύπους, είναι καλό να χρησιμοποιήσετε την ιδιότητα .Formula. Ωστόσο, για όλα τα άλλα, συνιστούμε τη χρήση του Macro Recorder…
Macro Recorder and Cell Formulas
Το Macro Recorder είναι το εργαλείο μας για τη σύνταξη τύπων κελιών με VBA. Μπορείτε απλά:
- Ξεκινήστε την εγγραφή
- Πληκτρολογήστε τον τύπο (με σχετικές / απόλυτες αναφορές, όπως απαιτείται) στο κελί και πατήστε enter
- Σταματήστε την εγγραφή
- Ανοίξτε το VBA και ελέγξτε τον τύπο, προσαρμόζοντας όπως απαιτείται και αντιγράφοντας+επικολλώντας τον κώδικα όπου χρειάζεται.
Το βρίσκω πολύ ευκολότερο για να εισαγάγετε έναν τύπο σε ένα κελί παρά να πληκτρολογήσετε τον αντίστοιχο τύπο σε VBA.
Προσέξτε μερικά πράγματα:
- Το Macro Recorder θα χρησιμοποιεί πάντα την ιδιότητα .FormulaR1C1
- Το Macro Recorder αναγνωρίζει τις Απόλυτες αναφορές έναντι των σχετικών κελιών
Ιδιότητα VBA FormulaR1C1
Η ιδιότητα FormulaR1C1 χρησιμοποιεί αναφορές κελιού τύπου R1C1 (σε αντίθεση με το τυπικό στυλ A1 που έχετε συνηθίσει να βλέπετε στο Excel).
Ορίστε μερικά παραδείγματα:
12345678910111213141516171819 | ΥποτύποςR1C1_Παράδειγμα ()«Αναφορά D5 (Απόλυτη)'= $ D $ 5Εύρος ("a1"). ΤύποςR1C1 = "= R5C4"'Αναφορά D5 (Σχετική) από το κελί Α1'= D5Εύρος ("a1"). FormulaR1C1 = "= R [4] C [3]"'Αναφορά D5 (Απόλυτη σειρά, σχετική στήλη) από το κελί Α1'= 5 $Εύρος ("a1"). FormulaR1C1 = "= R5C [3]"'Αναφορά D5 (Σχετική Σειρά, Απόλυτη Στήλη) από το κελί Α1'= $ 5 DΕύρος ("a1"). FormulaR1C1 = "= R [4] C4"Τέλος υπο |
Παρατηρήστε ότι η αναφορά κελιού τύπου R1C1 σάς επιτρέπει να ορίσετε απόλυτες ή σχετικές αναφορές.
Απόλυτες Αναφορές
Στην τυπική σημειογραφία A1 μια απόλυτη αναφορά μοιάζει με αυτήν: "= $ C $ 2". Στη σημειογραφία R1C1 μοιάζει με αυτό: "= R2C3".
Για να δημιουργήσετε μια αναφορά Απόλυτης κυψέλης χρησιμοποιώντας τύπο τύπου R1C1:
- R + αριθμός σειράς
- C + αριθμός στήλης
Παράδειγμα: Το R2C3 θα αντιπροσωπεύει το κελί $ C $ 2 (το C είναι η 3η στήλη).
123 | «Αναφορά D5 (Απόλυτη)'= $ D $ 5Εύρος ("a1"). ΤύποςR1C1 = "= R5C4" |
Σχετικές αναφορές
Οι σχετικές αναφορές κελιών είναι αναφορές κελιών που "κινούνται" όταν μετακινείται ο τύπος.
Στην τυπική σημειογραφία Α1 μοιάζουν με αυτό: "= C2". Στη σημειογραφία R1C1, χρησιμοποιείτε αγκύλες [] για να αντισταθμίσετε την αναφορά κελιού από το τρέχον κελί.
Παράδειγμα: Η εισαγωγή του τύπου "= R [1] C [1]" στο κελί B3 θα αναφέρει το κελί D4 (η κυψέλη 1 σειρά παρακάτω και 1 στήλη στα δεξιά του κελιού τύπου).
Χρησιμοποιήστε αρνητικούς αριθμούς για να αναφέρετε κελιά πάνω ή αριστερά από το τρέχον κελί.
123 | 'Αναφορά D5 (Σχετική) από το κελί Α1'= D5Εύρος ("a1"). FormulaR1C1 = "= R [4] C [3]" |
Μικτές Αναφορές
Οι αναφορές κυττάρων μπορεί να είναι εν μέρει σχετικές και εν μέρει απόλυτες. Παράδειγμα:
123 | 'Αναφορά D5 (Σχετική Σειρά, Απόλυτη Στήλη) από το κελί Α1'= $ 5 DΕύρος ("a1"). FormulaR1C1 = "= R [4] C4" |
Ιδιότητα τύπου VBA
Κατά τη ρύθμιση τύπων με το.Ιδιότητα τύπου θα χρησιμοποιείτε πάντα σημειογραφία τύπου Α1. Εισάγετε τον τύπο όπως ακριβώς θα κάνατε σε ένα κελί Excel, εκτός από το να περιβάλλεται από εισαγωγικά:
12 | «Αντιστοιχίστε έναν σκληρό κωδικοποιημένο τύπο σε ένα κελίΕύρος ("b3"). Τύπος = "= b1+b2" |
Συμβουλές για τον τύπο VBA
Τύπος με μεταβλητή
Όταν εργάζεστε με τύπους στο VBA, είναι πολύ συνηθισμένο να θέλετε να χρησιμοποιείτε μεταβλητές μέσα στους τύπους κελιών. Για να χρησιμοποιήσετε μεταβλητές, χρησιμοποιείτε & για να συνδυάσετε τις μεταβλητές με την υπόλοιπη συμβολοσειρά τύπου. Παράδειγμα:
1234567 | Sub Formula_Variable ()Dim colNum As LongcolNum = 4Εύρος ("a1"). FormulaR1C1 = "= R1C" & colNum & "+R2C" & colNumΤέλος υπο |
Αποσπάσματα τύπου
Εάν πρέπει να προσθέσετε μια προσφορά (“) μέσα σε έναν τύπο, εισαγάγετε την προσφορά δύο φορές (“ ”):
123 | Υπο Macro2 ()Εύρος ("B3"). FormulaR1C1 = "= TEXT (RC [-1]," "mm/dd/yyyy" ")"Τέλος υπο |
Μια μεμονωμένη παράθεση (") σημαίνει στο VBA το τέλος μιας σειράς κειμένου. Ενώ μια διπλή παράθεση ("") αντιμετωπίζεται σαν μια παράθεση μέσα στη συμβολοσειρά του κειμένου.
Ομοίως, χρησιμοποιήστε 3 εισαγωγικά ("" ") για να περιβάλλετε μια συμβολοσειρά με εισαγωγικό (")
12 | MsgBox "" "Χρησιμοποιήστε το 3 για να περιβάλλετε μια συμβολοσειρά με εισαγωγικά" """Αυτό θα εκτυπώσει το άμεσο παράθυρο |
Εκχωρήστε τον τύπο κελιού στη μεταβλητή συμβολοσειράς
Μπορούμε να διαβάσουμε τον τύπο σε ένα δεδομένο κελί ή εύρος και να τον εκχωρήσουμε σε μια μεταβλητή συμβολοσειράς:
123 | «Αντιστοίχιση τύπου κυττάρου σε μεταβλητήDim strFormula ως StringstrFormula = Εύρος ("B1"). Τύπος |
Διαφορετικοί τρόποι για να προσθέσετε τύπους σε ένα κελί
Ακολουθούν μερικά ακόμη παραδείγματα για τον τρόπο εκχώρησης ενός τύπου σε ένα κελί:
- Απευθείας ανάθεση τύπου
- Ορίστε μια μεταβλητή συμβολοσειράς που περιέχει τον τύπο
- Χρησιμοποιήστε μεταβλητές για να δημιουργήσετε τύπο
12345678910111213141516171819202122232425 | Sub MoreFormulaExamples ()«Εναλλακτικοί τρόποι για να προσθέσετε τύπο SUMστο κελί Β1'Dim strFormula ως StringDim κύτταρο ως εύροςdim fromRow as Range, toRow as RangeΟρισμός κελιού = Εύρος ("B1")«Απευθείας αντιστοίχιση συμβολοσειράςcell.Formula = "= SUM (A1: A10)"'Αποθήκευση συμβολοσειράς σε μια μεταβλητή"και εκχώρηση στην ιδιότητα" Formula "strFormula = "= SUM (A1: A10)"cell.Formula = strFormula«Χρήση μεταβλητών για τη δημιουργία μιας συμβολοσειράςκαι την εκχώρησή του στην ιδιότητα "Formula"από Σειρά = 1toRow = 10strFormula = "= SUM (A" & fromValue & ": A" & toValue & ")cell.Formula = strFormulaΤέλος υπο |
Ανανέωση τύπων
Για υπενθύμιση, για ανανέωση τύπων, μπορείτε να χρησιμοποιήσετε την εντολή Υπολογισμός:
1 | Υπολογίζω |
Για ανανέωση μεμονωμένου τύπου, εύρους ή ολόκληρου του φύλλου εργασίας. Υπολογίστε αντ 'αυτού:
1 | Φύλλα ("Φύλλο1"). Εύρος ("a1: a10"). Υπολογίστε |