VBA feltételes formázása - A Feltételes formátum alkalmazása a VBA Excel használatával

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:

Megjegyzés: A FormatCondition rendszerrel együtt használható formázott cellák megjelenésének néhány tulajdonsága a következő:

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:

Megjegyzés: Tehát a fenti két példában láthattuk, hogyan működik az 'Add' metódus bármely cellaérték-feltétel (numerikus vagy szöveges karakterlánc) esetén.

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

érdekes cikkek...