Feltételes formázás az Excel VBA-ban
Feltételes formázást alkalmazhatunk egy cellára vagy cellatartományra az Excel programban. A feltételes formátum olyan formátum, amelyet csak azok a cellák alkalmaznak, amelyek megfelelnek bizonyos feltételeknek, például egy adott érték feletti értékeknek, pozitív vagy negatív értékeknek, vagy egy adott képlettel rendelkező értékeknek stb. Ez a feltételes formázás az Excel VBA programozásában is elvégezhető a „ Formátumfeltételek gyűjtése ” a makróban / eljárásban.
A Formátumfeltétel olyan feltételes formátumot képvisel, amelyet beállíthatunk egy olyan módszer meghívásával, amely egy ilyen típusú változót ad vissza. Egyetlen tartomány összes feltételes formátumát tartalmazza, és csak három formátumfeltételt tartalmazhat.
FormatConditions.Add / Modify / Delete a VBA-ban a FormatCondition objektumok hozzáadásához / módosításához / törléséhez szolgál a gyűjteményben. Minden formátumot egy FormatCondition objektum képvisel. A FormatConditions a Range objektum egyik tulajdonsága, és adja hozzá a következő paramétereket az alábbi szintaxissal:
FormatConditions.Add (Type, Operator, Formula1, Formula2)
A Képlet hozzáadása szintaxis a következő argumentumokkal rendelkezik:
- Típus: Kötelező, azt jelenti, ha a feltételes formátum a cellában lévő értéken vagy egy kifejezésen alapul.
- Operátor: Opcionális, azt az operátort jelenti, amelyet egy értékkel kell használni, ha a „Type” cellaértéken alapul.
- 1. képlet: Opcionális, a feltételes formátumhoz társított értéket vagy kifejezést jelöli.
- 2. képlet: Opcionális, a feltételes formátum második részéhez társított értéket vagy kifejezést jelöli, ha az „Operator” paraméter „xlBetween” vagy „xlNotBetween”.
A FormatConditions.Modify szintaxisa szintén megegyezik a FormatConditions.Add szintaxissal .
Az alábbiakban felsoroljuk azokat az értékeket / felsorolásokat, amelyeket a „Hozzáadás” / „Módosítás” egyes paraméterei figyelembe vehetnek:

Példák a VBA feltételes formázására
Az alábbiakban bemutatjuk a feltételes formázás példáit az excel VBA-ban.
1. példa
Tegyük fel, hogy van egy Excel fájlunk, amely néhány hallgató nevét és jegyeit tartalmazza, és meg akarjuk határozni / kiemelni a jelöléseket félkövér és kék színű, amely nagyobb, mint 80, és félkövér és piros színű, ami kisebb, mint 50. Lássuk a fájlban található adatokat:

A FormatConditions-t használjuk. Ehhez adja hozzá a függvényt az alábbiak szerint:
- Lépjen a Fejlesztő -> Visual Basic Editor oldalra:

- Kattintson a jobb gombbal a munkafüzet nevére a „Project-VBAProject” panelen-> „Beszúrás” -> „Modul”.

- Most írja be a kódot / eljárást ebbe a modulba:
Kód:
Alformázás () Vége Al

- Adja meg az rng, condition1, condition2 változót:
Kód:
Alformázás () Dim rng As Range Dim feltétel1 As FormatCondition, feltétel2 As FormatCondition End Sub

- Állítsa be / rögzítse azt a tartományt, amelyen a feltételes formázást kívánja, a VBA „Tartomány” funkcióval:
Kód:
Alformázás () Dim rng As Range Dim feltétel1 As FormatCondition, condition2 As FormatCondition Set rng = Tartomány ("B2", "B11") End Sub

- Törölje / törölje a meglévő feltételes formázást (ha van ilyen) a tartományból a „FormatConditions.Delete” használatával:
Kód:
Alformázás () Dim rng As Range Dim feltétel1 As FormatCondition, condition2 As FormatCondition Set rng = Tartomány ("B2", "B11") rng.FormatConditions.Delete End Sub

- Most adja meg és állítsa be a feltételeket minden feltételes formátumhoz a „FormatConditions.Add” használatával:
Kód:
Alformázás () Dim rng As Range Dim feltétel1 As FormatCondition, condition2 As FormatCondition Set rng = Range ("B2", "B11") rng.FormatConditions.Delete Set condition1 = rng.FormatConditions.Add (xlCellValue, xlGreater, "= 80 ") Állítsa be a feltétel2 = rng.FormatConditions.Add (xlCellValue, xlLess," = 50 ") End Sub véget

- Határozza meg és állítsa be az egyes feltételekhez alkalmazandó formátumot

Másolja és illessze be ezt a kódot a VBA osztály moduljába.
Kód:
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
Amikor ezt a kódot az F5 billentyűvel vagy manuálisan futtatjuk, azt látjuk, hogy az 50-nél kisebb jeleket félkövéren és piros színnel emelik ki, míg a 80-nál nagyobbakat félkövéren és kékkel az alábbiak szerint:

2. példa
Tegyük fel, hogy a fenti példában van egy másik oszlopunk is, amely kimondja, hogy a hallgató „Topper”, ha 80-nál több pontot szerez, máskülönben ellenük írták a Pass / Nem-et. Most a „Topper” néven szereplő értékeket szeretnénk kiemelni félkövér és kék színként. Lássuk a fájlban található adatokat:

Ebben az esetben a kód / eljárás a következőképpen működne:
Kód:
Sub TextFormatting () Vége Sub

Határozza meg és állítsa be az egyes feltételekhez alkalmazandó formátumot
Kód:
Sub TextFormatting () With Range ("c2: c11"). FormatConditions.Add (xlTextString, TextOperator: = xlContains, String: = "topper") With .Font .Bold = True .Color = vbBlue Vége Végével Vége Alval

A fenti kódban láthatjuk, hogy szeretnénk-e tesztelni, hogy a „C2: C11” tartomány tartalmazza-e a „Topper” karakterláncot, így a „Format.Add” „Onamestor” paramétere az „Xcontains” felsorolást tartalmazza tesztelje ezt a feltételt a rögzített tartományban (azaz C2: C11), majd hajtsa végre a szükséges feltételes formázást (betűtípus-változtatásokat) ezen a tartományon.
Most, amikor ezt a kódot futtatjuk manuálisan vagy az F5 billentyű megnyomásával, azt látjuk, hogy a „Topper” cellaértékek kék színnel és félkövérrel vannak kiemelve:

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.
- Háromnál több feltételes formátumot alkalmazhatunk egy tartományra az „Add” módszerrel, használhatjuk az „If” vagy a „select case” kifejezéseket.
- Ha az 'Add' metódus 'Type' paramétere: 'xlExpression', akkor az 'Operator' paraméter figyelmen kívül marad.
- A 'Formula1' és a 'Formula2' paraméterek az 'Add' metódusban lehetnek cellahivatkozások, konstans értékek, string értékek vagy akár képletek.
- A „Formula2” paraméter csak akkor használható, ha az „Operator” paraméter „xlBetween” vagy „xlNotBetween”, különben figyelmen kívül hagyja.
- Az összes feltételes formázás eltávolításához bármely munkalapról használhatjuk a „Törlés” módszert az alábbiak szerint:
Cells.FormatConditions.Delete