Μορφοποίηση υπό όρους VBA | Εφαρμογή μορφής υπό όρους χρησιμοποιώντας το VBA Excel

Μορφοποίηση υπό όρους στο Excel VBA

Μπορούμε να εφαρμόσουμε μορφοποίηση υπό όρους σε ένα κελί ή μια περιοχή κελιών στο Excel. Μία μορφή υπό όρους είναι μια μορφή που εφαρμόζεται μόνο σε κελιά που πληρούν συγκεκριμένα κριτήρια, π.χ. τιμές πάνω από μια συγκεκριμένη τιμή, θετικές ή αρνητικές τιμές ή τιμές με έναν συγκεκριμένο τύπο κ.λπ. Αυτή η μορφοποίηση υπό όρους μπορεί επίσης να γίνει στον προγραμματισμό excel VBA χρησιμοποιώντας τη " Συλλογή συνθηκών μορφοποίησης " στη μακροεντολή / διαδικασία.

Μορφή Συνθήκη χρησιμοποιείται για να αντιπροσωπεύσει μια υπό όρους μορφή που μπορεί να οριστεί καλώντας μια μέθοδο που επιστρέφει μια μεταβλητή αυτού του τύπου. Περιέχει όλες τις μορφές υπό όρους για ένα μόνο εύρος και μπορεί να περιέχει μόνο τρεις συνθήκες μορφής.

Το FormatConditions.Add / Modify / Delete χρησιμοποιείται στο VBA για προσθήκη / τροποποίηση / διαγραφή αντικειμένων FormatCondition στη συλλογή. Κάθε μορφή αντιπροσωπεύεται από ένα αντικείμενο FormatCondition. Το FormatConditions είναι μια ιδιότητα του αντικειμένου Range και το Add έχει τις ακόλουθες παραμέτρους με την παρακάτω σύνταξη:

FormatConditions. Προσθήκη (Τύπος, τελεστής, τύπος1, τύπος2) 

Η σύνταξη Προσθήκη τύπου έχει τα ακόλουθα ορίσματα:

  • Τύπος: Απαιτείται, αντιπροσωπεύει εάν η υπό όρους μορφή βασίζεται στην τιμή που υπάρχει στο κελί ή σε μια έκφραση
  • Χειριστής: Προαιρετικό, αντιπροσωπεύει τον τελεστή που θα χρησιμοποιείται με μια τιμή όταν το «Τύπος» βασίζεται στην τιμή του κελιού
  • Τύπος 1: Προαιρετικό, αντιπροσωπεύει την τιμή ή την έκφραση που σχετίζεται με τη μορφή υπό όρους.
  • Τύπος 2: Προαιρετικό, αντιπροσωπεύει την τιμή ή την έκφραση που σχετίζεται με το δεύτερο μέρος της μορφής υπό όρους όταν η παράμετρος: «Operator» είναι είτε «xlBetween» είτε «xlNotBetween»

Το FormatConditions.Modify έχει επίσης την ίδια σύνταξη με το FormatConditions.Add.

Ακολουθεί η λίστα ορισμένων τιμών / απαρίθμησης που μπορούν να ληφθούν από ορισμένες παραμέτρους «Προσθήκη» / «Τροποποίηση»:

Παραδείγματα μορφοποίησης υπό όρους VBA

Ακολουθούν τα παραδείγματα μορφοποίησης υπό όρους στο excel vba.

Μπορείτε να κατεβάσετε αυτό το Πρότυπο μορφοποίησης υπό όρους VBA εδώ - Πρότυπο μορφοποίησης υπό όρους VBA

Παράδειγμα # 1

Ας πούμε ότι έχουμε ένα αρχείο Excel που περιέχει το όνομα και τα σημάδια ορισμένων μαθητών και θέλουμε να προσδιορίσουμε / επισημάνουμε τα σημάδια ως Έντονα και μπλε σε χρώμα που είναι μεγαλύτερο από 80 και ως Έντονα και Κόκκινα σε χρώμα που είναι μικρότερο από 50. Ας δούμε τα δεδομένα που περιέχονται στο αρχείο:

Χρησιμοποιούμε τη συνάρτηση FormatConditions.Add όπως παρακάτω για να το επιτύχουμε:

  • Μεταβείτε στο Developer -> Visual Basic Editor:

  • Κάντε δεξί κλικ στο όνομα του βιβλίου εργασίας στο παράθυρο "Project-VBAProject" -> "Insert" -> "Module".

  • Τώρα γράψτε τον κωδικό / διαδικασία σε αυτήν την ενότητα:

Κώδικας:

 Υπο μορφοποίηση () End Sub 

  • Ορίστε τη μεταβλητή rng, condition1, condition2:

Κώδικας:

 Υπο μορφοποίηση () Dim rng As Range Dim condition1 As FormatCondition, condition2 As FormatCondition End Sub 

  • Ορίστε / διορθώστε το εύρος στο οποίο θα είναι επιθυμητή η μορφοποίηση υπό όρους χρησιμοποιώντας τη λειτουργία VBA «Range»:

Κώδικας:

 Υπο μορφοποίηση () Dim rng As Range Dim condition1 As FormatCondition, condition2 As FormatCondition Set rng = Range ("B2", "B11") End Sub 

  • Διαγραφή / εκκαθάριση τυχόν υπάρχουσας μορφοποίησης υπό όρους (εάν υπάρχει) από το εύρος, χρησιμοποιώντας το «FormatConditions.Delete»:

Κώδικας:

 Υπο μορφοποίηση () Dim rng As Range Dim condition1 As FormatCondition, condition2 As FormatCondition Set rng = Range ("B2", "B11") rng.FormatConditions. Διαγραφή End Sub

  • Τώρα ορίστε και ορίστε τα κριτήρια για κάθε μορφή υπό όρους, χρησιμοποιώντας το «FormatConditions.Add»:

Κώδικας:

 Υπο μορφοποίηση () Dim rng As Range Dim condition1 As FormatCondition, condition2 As FormatCondition Set rng = Range ("B2", "B11") rng.FormatConditions.Delete Set condition1 = rng.FormatConditions.Add (xlCellValue, xlGreater, "= 80 ") Ορισμός συνθήκης2 = rng.FormatConditions.Add (xlCellValue, xlLess," = 50 ") End Sub 

  • Ορίστε και ορίστε τη μορφή που θα εφαρμοστεί για κάθε συνθήκη

Αντιγράψτε και επικολλήστε αυτόν τον κώδικα στην ενότητα κλάσης VBA.

Κώδικας:

Υπο μορφοποίηση () 'Καθορισμός των μεταβλητών: Dim rng As Range Dim condition1 As FormatCondition, condition2 As FormatCondition' Καθορισμός / ρύθμιση του εύρους στο οποίο θα είναι επιθυμητή η μορφοποίηση υπό μορφή Set rng = Range ("B2", "B11") 'To διαγραφή / εκκαθάριση τυχόν υπάρχουσας μορφοποίησης υπό όρους από το εύρος rng.FormatConditions.Delete «Καθορισμός και ρύθμιση των κριτηρίων για κάθε μορφή υπό όρους. Προσθήκη (xlCellValue, xlLess, "= 50") 'Καθορισμός και ρύθμιση της μορφής που θα εφαρμοστεί για κάθε συνθήκη Με συνθήκη1 .Font.Color = vbBlue .Font.Bold = True End With With condition2 .Font.Color = vbRed .Font. Bold = True End με End Sub

Τώρα όταν εκτελούμε αυτόν τον κώδικα χρησιμοποιώντας το πλήκτρο F5 ή χειροκίνητα, βλέπουμε ότι τα σημάδια που είναι μικρότερα από 50 επισημαίνονται με έντονα και κόκκινα, ενώ αυτά που είναι μεγαλύτερα από 80 επισημαίνονται με έντονα και μπλε ως εξής:

Σημείωση: Μερικές από τις ιδιότητες για την εμφάνιση μορφοποιημένων κελιών που μπορούν να χρησιμοποιηθούν με το FormatCondition είναι:

Παράδειγμα # 2

Ας πούμε στο παραπάνω παράδειγμα έχουμε επίσης μια άλλη στήλη που αναφέρει ότι ο μαθητής είναι «κορυφαίος» εάν βαθμολογεί πάνω από 80 βαθμούς, αλλιώς το Pass / Fail γράφεται εναντίον τους. Τώρα θέλουμε να επισημάνουμε τις τιμές που αναφέρονται ως "Topper" ως Bold και Blue. Ας δούμε τα δεδομένα που περιέχονται στο αρχείο:

Σε αυτήν την περίπτωση, ο κώδικας / διαδικασία θα λειτουργούσε ως εξής:

Κώδικας:

 Sub TextFormatting () End Sub 

Ορίστε και ορίστε τη μορφή που θα εφαρμοστεί για κάθε συνθήκη

Κώδικας:

 Sub TextFormatting () With Range ("c2: c11"). FormatConditions.Add (xlTextString, TextOperator: = xlContains, String: = "topper") Με .Font .Bold = True .Color = vbBlue End with End with End Sub 

Μπορούμε να δούμε στον παραπάνω κώδικα που θέλουμε να δοκιμάσουμε εάν το εύρος: «C2: C11» περιέχει τη συμβολοσειρά: «Topper», οπότε η παράμετρος: «Operator» του «Format.Add» παίρνει την αρίθμηση: «xlContains», για να ελέγξετε αυτήν την κατάσταση στο σταθερό εύρος (π.χ. C2: C11) και, στη συνέχεια, κάντε την απαιτούμενη μορφοποίηση υπό όρους (αλλαγές γραμματοσειράς) σε αυτό το εύρος.

Τώρα, όταν εκτελούμε αυτόν τον κώδικα χειροκίνητα ή πατώντας το πλήκτρο F5, βλέπουμε ότι οι τιμές των κελιών με το «Topper» επισημαίνονται με μπλε και έντονα γράμματα:

Σημείωση: Έτσι, έχουμε δει στα παραπάνω δύο παραδείγματα πώς λειτουργεί η μέθοδος "Προσθήκη" σε περίπτωση οποιουδήποτε κριτηρίου τιμής κελιού (αριθμητική ή συμβολοσειρά κειμένου).

Ακολουθούν μερικές άλλες περιπτώσεις / κριτήρια που μπορούν να χρησιμοποιηθούν για τη δοκιμή και συνεπώς να εφαρμόσουν τη μορφοποίηση υπό όρους VBA:

  • Μορφοποίηση ανά χρονική περίοδο
  • Μέση κατάσταση
  • Κατάσταση κλίμακας χρώματος
  • Συνθήκη IconSet
  • Κατάσταση βάσης δεδομένων
  • Μοναδικές τιμές
  • Διπλότυπες τιμές
  • Τιμές Top10
  • Ποσοστιαία κατάσταση
  • Κατάσταση κενών κ.λπ.

Με διαφορετικές συνθήκες προς δοκιμή, διαφορετικές τιμές / απαρίθμηση λαμβάνονται με παραμέτρους του «Προσθήκη».

Πράγματα που πρέπει να θυμάστε σχετικά με τη μορφοποίηση υπό όρους VBA

  • Η μέθοδος «Προσθήκη» με το «FormatConditions» χρησιμοποιείται για τη δημιουργία μιας νέας μορφής υπό όρους, της μεθόδου «Διαγραφή» για τη διαγραφή οποιασδήποτε μορφής υπό όρους και της μεθόδου «Τροποποίηση» για να αλλάξει οποιαδήποτε υπάρχουσα μορφή υπό όρους.
  • Η μέθοδος «Προσθήκη» με τη «Συλλογή FormatConditions» αποτυγχάνει εάν δημιουργηθούν περισσότερες από τρεις μορφές υπό όρους για ένα μόνο εύρος.
  • Για να εφαρμόσουμε περισσότερες από τρεις μορφές υπό όρους σε ένα εύρος χρησιμοποιώντας τη μέθοδο "Προσθήκη", μπορούμε να χρησιμοποιήσουμε το "If" ή το "select case".
  • Εάν η μέθοδος "Προσθήκη" έχει την παράμετρο "Type" ως: "xlExpression", τότε η παράμετρος "Operator" αγνοείται.
  • Οι παράμετροι: «Formula1» και «Formula2» στη μέθοδο «Προσθήκη» μπορούν να είναι μια αναφορά κελιού, σταθερή τιμή, τιμή συμβολοσειράς ή ακόμη και ένας τύπος.
  • Η παράμετρος: «Formula2» χρησιμοποιείται μόνο όταν η παράμετρος: «Operator» είναι είτε «xlBetween» είτε «xlNotBetween», αλλιώς αγνοείται.
  • Για να αφαιρέσουμε όλες τις μορφές υπό όρους από οποιοδήποτε φύλλο εργασίας, μπορούμε να χρησιμοποιήσουμε τη μέθοδο «Διαγραφή» ως εξής:
Cells. FormatConditions. Διαγραφή