VBA Conditional Formatting | Mag-apply ng Conditional Format gamit ang VBA Excel

Conditional Formatting sa Excel VBA

Maaari kaming maglapat ng kondisyunal na pag-format sa isang cell o saklaw ng mga cell sa Excel. Ang isang kondisyong format ay isang format na inilalapat lamang sa mga cell na nakakatugon sa ilang mga pamantayan, sinasabi na ang mga halagang mas mataas sa isang partikular na halaga, positibo o negatibong mga halaga, o mga halagang may isang partikular na pormula, atbp Ang kondisyong ito ng pag-format ay maaari ding gawin sa excel VBA na programa gamit ang ang 'Koleksyon ng Mga Kundisyon ng Format’Sa macro / pamamaraan.

Ginagamit ang Format na Kundisyon upang kumatawan sa isang kondisyong format na maaaring maitakda sa pamamagitan ng pagtawag sa isang pamamaraan na nagbabalik ng isang variable ng uri na iyon. Naglalaman ito ng lahat ng mga kondisyonal na format para sa isang solong saklaw at maaari lamang magkaroon ng tatlong mga kundisyon ng format.

FormatConditions.Add / Modify / Delete ay ginagamit sa VBA upang idagdag / baguhin / tanggalin ang mga object ng FormatCondition sa koleksyon. Ang bawat format ay kinakatawan ng isang object ng FormatCondition. Mga Format ng Kundisyon ay isang pag-aari ng saklaw na bagay at Idagdag pa ay sumusunod sa mga parameter na may ibaba syntax:

FormatConditions.Add (Type, Operator, Formula1, Formula2) 

Ang sumusunod na syntax ng pagdaragdag ay may mga sumusunod na argumento:

  • Uri: Kinakailangan, kumakatawan kung ang kondisyunal na format ay batay sa halagang naroroon sa cell o isang expression
  • Operator: Opsyonal, kumakatawan sa operator na gagamitin ng isang halaga kapag ang ‘Type’ ay batay sa halaga ng cell
  • Formula1: Opsyonal, kumakatawan sa halaga o expression na nauugnay sa kondisyunal na format.
  • Formula2: Opsyonal, kumakatawan sa halaga o expression na nauugnay sa ikalawang bahagi ng kondisyong format kapag ang parameter: Ang 'Operator' ay alinman sa 'xlBet pagitan' o 'xlNotBet pagitan'

FormatConditions. Baguhin mayroon ding parehong syntax bilang FormatConditions.Add.

Ang sumusunod ay ang listahan ng ilang mga halaga / enumerasyon na maaaring makuha ng ilang mga parameter ng 'Idagdag' / 'Baguhin':

Mga halimbawa ng VBA Conditional Formatting

Nasa ibaba ang mga halimbawa ng Conditional formatting sa excel vba.

Maaari mong i-download ang VBA Conditional Formatting Template na ito - VBA Conditional Formatting Template

Halimbawa # 1

Sabihin nating mayroon kaming isang file na Excel na naglalaman ng ilang mga pangalan ng mag-aaral at marka, at nais naming matukoy / i-highlight ang mga marka bilang Bold at asul na kulay na mas malaki sa 80, at bilang Bold at Red sa kulay na mas mababa sa 50. Tingnan natin ang data na nilalaman sa file:

Ginagamit namin ang FormatConditions. Magdagdag ng pag-andar tulad ng sa ibaba upang magawa ito:

  • Pumunta sa Developer -> Visual Basic Editor:

  • Pag-right click sa pangalan ng workbook sa pane ng 'Project-VBAProject'->' Insert '->' Module '.

  • Ngayon isulat ang code / pamamaraan sa modyul na ito:

Code:

 Sub formatting () Wakas Sub 

  • Tukuyin ang variable rng, kondisyon1, kondisyon2:

Code:

 Sub formatting () Dim rng Bilang Saklaw na dim kondisyon1 Bilang FormatCondition, kondisyon2 Bilang FormatCondition End Sub 

  • Itakda / ayusin ang saklaw kung aling ang kondaktibong pag-format ay nais na gamitin ang pagpapaandar ng VBA na 'Saklaw':

Code:

 Sub formatting () Dim rng As Range Dim kondisyon1 Bilang FormatCondition, kondisyon2 Bilang FormatCondition Set rng = Saklaw ("B2", "B11") End Sub 

  • Tanggalin / i-clear ang anumang umiiral na kondisyonal na pag-format (kung mayroon man) mula sa saklaw, gamit ang ‘FormatConditions.Delete’:

Code:

 Sub formatting () Dim rng Bilang Saklaw na kalagayan ng Dim1 Bilang FormatCondition, kondisyon2 Bilang FormatCondition Set rng = Saklaw ("B2", "B11") rng.FormatConditions. Tanggalin ang End Sub

  • Ngayon tukuyin at itakda ang mga pamantayan para sa bawat kondisyong format, gamit ang 'FormatConditions.Add':

Code:

 Sub formatting () Dim rng Bilang Saklaw na kalagayan ng kalagayan1 Bilang FormatCondition, kondisyon2 Bilang FormatCondition Set rng = Saklaw ("B2", "B11") rng.FormatConditions. Tanggalin ang Itakda na kondisyon1 = rng.FormatConditions.Add (xlCellValue, xlGreater, "= 80 ") Itakda ang kundisyon2 = rng.FormatConditions.Add (xlCellValue, xlLess," = 50 ") End Sub 

  • Tukuyin at itakda ang format na ilalapat para sa bawat kundisyon

Kopyahin at i-paste ang code na ito sa iyong module ng klase ng VBA.

Code:

 Sub formatting () 'Tinutukoy ang mga variable: Dim rng Bilang Saklaw na kalagayan ng kalagayan1 Bilang FormatCondition, kundisyon2 Bilang Pag-aayos / Pag-set ng FormatCondition' ng Saklaw sa kung aling mga kondisyong pag-format ang nais na Itakda rng = Saklaw ("B2", "B11") 'To tanggalin / i-clear ang anumang umiiral na kondisyonal na pag-format mula sa saklaw na rng.FormatConditions. Tanggalin ang 'Pagtukoy at pagtatakda ng mga pamantayan para sa bawat kondisyong format Itakda ang kondisyon1 = rng.FormatConditions.Add (xlCellValue, xlGreater, "= 80") Itakda ang kondisyon2 = rng.FormatConditions. Idagdag (xlCellValue, xlLess, "= 50") 'Ang pagtukoy at pagtatakda ng format na ilalapat para sa bawat kundisyon Sa kondisyon1 .Font.Color = vbBlue .Font.Bold = True End With With condition2 .Font.Color = vbRed .Font. Matapang = True End With End Sub 

Ngayon kapag pinatakbo namin ang code na ito gamit ang F5 key o manu-mano, nakikita namin na ang mga marka na mas mababa sa 50 ay naka-highlight sa naka-bold at pula, habang ang mga higit sa 80 ay naka-highlight sa naka-bold at asul tulad ng sumusunod:

Tandaan: Ang ilan sa mga pag-aari para sa paglitaw ng mga naka-format na mga cell na maaaring magamit sa FormatCondition ay:

Halimbawa # 2

Sabihin nating sa nabanggit na halimbawa mayroon kaming isa pang haligi na nagsasaad na ang mag-aaral ay isang 'Topper' kung nakakuha siya ng higit sa 80 marka, kung hindi nakasulat laban sa kanila ang Pass / Fail. Ngayon nais naming i-highlight ang mga halagang binanggit bilang 'Topper' bilang Bold at Blue. Tingnan natin ang data na nilalaman sa file:

Sa kasong ito, gagana ang code / pamamaraan tulad ng sumusunod:

Code:

 Sub TextFormatting () End Sub 

Tukuyin at itakda ang format na ilalapat para sa bawat kundisyon

Code:

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

Maaari naming makita sa itaas na code na nais naming subukan kung ang saklaw: 'C2: C11 ”ay naglalaman ng string:“ Topper ”, kaya ang parameter:“ Operator ”ng' Format.Add 'ay kukuha ng enumerasyon:” xlContains ”, upang subukan ang kundisyong ito sa nakapirming saklaw (ie C2: C11), at pagkatapos ay gawin ang kinakailangang kondisyong pag-format (mga pagbabago sa font) sa saklaw na ito.

Ngayon kapag pinatakbo namin ang code na ito nang manu-mano o sa pamamagitan ng pagpindot sa F5 key, nakikita namin na ang mga halaga ng cell na may 'Topper' ay nai-highlight sa Blue at naka-bold:

Tandaan: Kaya, nakita namin sa nabanggit na dalawang halimbawa kung paano gumagana ang pamamaraang 'Magdagdag' sa kaso ng anumang pamantayan sa halaga ng cell (numero o string ng teksto).

Nasa ibaba ang ilang iba pang mga pagkakataon / pamantayan na maaaring magamit upang subukan at sa gayon ay mailapat ang kondisyunal na pag-format ng VBA sa:

  • Pag-format ayon sa Panahon ng Oras
  • Karaniwang kondisyon
  • Kundisyon ng Kaliskis ng Kulay
  • Kundisyon ng IconSet
  • Kondisyon sa Databar
  • Mga Natatanging Halaga
  • Mga Dobleng Halaga
  • Nangungunang10 na mga halaga
  • Porsyentong Kondisyon
  • Kundisyon ng Blangko, atbp.

Sa iba't ibang mga kundisyon upang masubukan, ang iba't ibang mga halaga / enumerasyon ay kinukuha ng mga parameter ng 'Idagdag'.

Mga Bagay na Dapat Tandaan Tungkol sa VBA Conditional Formatting

  • Ginagamit ang pamamaraang 'Add' na may 'FormatConditions' upang lumikha ng isang bagong kondisyong format, 'Tanggalin' na paraan upang tanggalin ang anumang kondisyong format, at 'Baguhin' ang pamamaraan upang baguhin ang anumang umiiral na kondisyunal na format.
  • Nabigo ang pamamaraang 'Magdagdag' na may 'FormatConditions Collection' kung higit sa tatlong mga kondisyonal na format ang nilikha para sa isang solong saklaw.
  • Upang mailapat ang higit sa tatlong mga kondisyunal na format sa isang saklaw gamit ang pamamaraang 'Magdagdag', maaari naming gamitin ang 'Kung' o 'piling kaso'.
  • Kung ang pamamaraang 'Magdagdag' ay mayroong parameter na 'Uri' bilang: 'xlExpression', kung gayon ang parameter na 'Operator' ay hindi pinapansin.
  • Ang mga parameter: 'Formula1' at 'Formula2' sa pamamaraang 'Magdagdag' ay maaaring isang sanggunian sa cell, pare-pareho ang halaga, halaga ng string, o kahit isang pormula.
  • Ang parameter: Ang 'Formula2' ay ginagamit lamang kapag ang parameter: 'Operator' ay alinman sa 'xlBet pagitan' o 'xlNotBet pagitan', kung hindi man ay hindi ito pinansin.
  • Upang alisin ang lahat ng kondisyunal na pag-format mula sa anumang worksheet, maaari naming gamitin ang pamamaraang 'Tanggalin' tulad ng sumusunod:
Mga Cell.FormatConditions. Tanggalin