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

Πίνακας περιεχομένων

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  • Μεταβείτε στο 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
  • Ορίστε / διορθώστε το εύρος στο οποίο επιθυμείτε τη μορφοποίηση υπό όρους χρησιμοποιώντας τη λειτουργία «Range» VBA:

Κώδικας:

Υπο μορφοποίηση () 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.

Κώδικας:

Sub formatting() 'Definining the variables: Dim rng As Range Dim condition1 As FormatCondition, condition2 As FormatCondition 'Fixing/Setting the range on which conditional formatting is to be desired Set rng = Range("B2", "B11") 'To delete/clear any existing conditional formatting from the range rng.FormatConditions.Delete 'Defining and setting the criteria for each conditional format Set condition1 = rng.FormatConditions.Add(xlCellValue, xlGreater, "=80") Set condition2 = rng.FormatConditions.Add(xlCellValue, xlLess, "=50") 'Defining and setting the format to be applied for each condition With condition1 .Font.Color = vbBlue .Font.Bold = True End With With condition2 .Font.Color = vbRed .Font.Bold = True End With 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 ", έτσι ώστε η παράμετρος:" Onamestor "του" Format.Add "παίρνει την αρίθμηση:" δοκιμάστε αυτήν την κατάσταση στο σταθερό εύρος (δηλαδή, C2: C11) και, στη συνέχεια, κάντε την απαιτούμενη μορφοποίηση υπό όρους (αλλαγές γραμματοσειράς) σε αυτό το εύρος.

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

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

Below are some other instances/criteria that can be used to test and thus apply VBA conditional formatting on:

  • Format by Time Period
  • Average condition
  • Colour Scale condition
  • IconSet condition
  • Databar condition
  • Unique Values
  • Duplicate Values
  • Top10 values
  • Percentile Condition
  • Blanks Condition, etc.

With different conditions to be tested, different values/enumeration are taken by parameters of ‘Add.’

Things to Remember About VBA Conditional Formatting

  • ‘Add’ method with ‘FormatConditions’ is used to create a new conditional format, ’Delete’ method to delete any conditional format, and ‘Modify’ method to alter any existing conditional format.
  • The ‘Add’ method with ‘FormatConditions Collection’ fails if more than three conditional formats are created for a single range.
  • Για να εφαρμόσουμε περισσότερες από τρεις μορφές υπό όρους σε ένα εύρος χρησιμοποιώντας τη μέθοδο "Προσθήκη", μπορούμε να χρησιμοποιήσουμε το "If" ή το "select case".
  • Εάν η μέθοδος "Προσθήκη" έχει την παράμετρο "Type" ως: "xlExpression", τότε η παράμετρος "Operator" αγνοείται.
  • Οι παράμετροι: «Formula1» και «Formula2» στη μέθοδο «Προσθήκη» μπορούν να είναι μια αναφορά κελιού, σταθερή τιμή, τιμή συμβολοσειράς ή ακόμη και ένας τύπος.
  • Η παράμετρος: «Formula2» χρησιμοποιείται μόνο όταν η παράμετρος: «Operator» είναι είτε «xlBetween» είτε «xlNotBetween», αλλιώς αγνοείται.
  • Για να αφαιρέσουμε όλες τις μορφές υπό όρους από οποιοδήποτε φύλλο εργασίας, μπορούμε να χρησιμοποιήσουμε τη μέθοδο «Διαγραφή» ως εξής:
Cells. FormatConditions. Διαγραφή

ενδιαφέροντα άρθρα...