Uvjetno oblikovanje VBA - Primijenite uvjetni format koristeći VBA Excel

Uvjetno oblikovanje u programu Excel VBA

Uvjetno oblikovanje možemo primijeniti na ćeliju ili raspon ćelija u programu Excel. Uvjetni format je format koji se primjenjuje samo na stanice koje zadovoljavaju određene kriterije, recimo vrijednosti iznad određene vrijednosti, pozitivne ili negativne vrijednosti ili vrijednosti s određenom formulom itd. Ovo se uvjetno oblikovanje može izvesti i u programu Excel VBA pomoću ' Zbirka uvjeta formata ' u makronaredbi / postupku.

Uvjet formata koristi se za predstavljanje uvjetnog formata koji se može postaviti pozivom metode koja vraća varijablu tog tipa. Sadrži sve uvjetne formate za jedan raspon i može sadržavati samo tri uvjeta formata.

FormatConditions.Add / Modify / Delete koristi se u VBA za dodavanje / izmjenu / brisanje objekata FormatCondition u zbirku. Svaki format predstavljen je objektom FormatCondition. FormatConditions je svojstvo objekta Range i dodajte sljedeće parametre sa sintaksom ispod:

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

Sintaksa formule Dodaj ima sljedeće argumente:

  • Vrsta: Obavezno, predstavlja je li uvjetni format zasnovan na vrijednosti prisutnoj u ćeliji ili izrazu.
  • Operator: Izborno, predstavlja operatora koji će se koristiti s vrijednošću kada se 'Tip' temelji na vrijednosti ćelije.
  • Formula1: Izborno, predstavlja vrijednost ili izraz povezan s uvjetnim formatom.
  • Formula2: Izborno, predstavlja vrijednost ili izraz povezan s drugim dijelom uvjetnog formata kada je parametar: 'Operator' ili 'xlBetween' ili 'xlNotBetween.'

FormatConditions.Modify također ima istu sintaksu kao FormatConditions.Add.

Slijedi popis nekih vrijednosti / nabrajanja koje mogu uzeti neki parametri 'Dodaj' / 'Izmijeni':

Primjeri VBA uvjetnog oblikovanja

Ispod su primjeri uvjetnog oblikovanja u excelu VBA.

Primjer # 1

Recimo da imamo Excel datoteku koja sadrži ime i ocjene nekih učenika i želimo označiti / istaknuti oznake kao podebljane i plave boje, što je veće od 80, te kao podebljane i crvene boje, što je manje od 50. Pogledajmo podatke sadržane u datoteci:

Koristimo FormatConditions.Dodajte funkciju kao u nastavku da biste to postigli:

  • Idite na Developer -> Visual Basic Editor:
  • Desnom tipkom miša kliknite naziv radne knjige u oknu 'Project-VBAProject' -> 'Umetni' -> 'Modul'.
  • Sada napišite kod / postupak u ovaj modul:

Kodirati:

Podoblikovanje () Kraj pod
  • Definirajte varijablu rng, condition1, condition2:

Kodirati:

Podoblikovanje () Dim rng As Range Dim condition1 Kao FormatCondition, condition2 Kao FormatCondition End Sub
  • Postavite / popravite raspon na kojem se želi uvjetno formatiranje pomoću funkcije VBA 'Raspon':

Kodirati:

Podoblikovanje () Dim rng As Range Dim condition1 As FormatCondition, condition2 As FormatCondition Set rng = Range ("B2", "B11") End Sub
  • Izbrišite / izbrišite sve postojeće uvjetne formatiranja (ako postoje) iz raspona, koristeći 'FormatConditions.Delete':

Kodirati:

Podoblikovanje () Dim rng As Range Dim condition1 Kao FormatCondition, condition2 As FormatCondition Set rng = Range ("B2", "B11") rng.FormatConditions.Delete End Sub
  • Sada definirajte i postavite kriterije za svaki uvjetni format, koristeći 'FormatConditions.Add':

Kodirati:

Podoblikovanje () Dim rng As Range Dim condition1 Kao FormatCondition, condition2 As FormatCondition Set rng = Range ("B2", "B11") rng.FormatConditions.Delete Set condition1 = rng.FormatConditions.Add (xlCellValue, xlGreater, "= 80 ") Postavite uvjet2 = rng.FormatConditions.Add (xlCellValue, xlLess," = 50 ") Kraj Sub
  • Definirajte i postavite format koji će se primijeniti za svaki uvjet

Kopirajte i zalijepite ovaj kod u svoj modul klase VBA.

Kodirati:

Podoblikovanje () 'Utvrđivanje varijabli: Dim rng As Range Dim condition1 Kao FormatCondition, condition2 As FormatCondition' Popravljanje / Postavljanje raspona na kojem se želi uvjetno formatiranje Postavi rng = Raspon ("B2", "B11") 'Na izbriši / izbriši bilo koje postojeće uvjetno oblikovanje iz raspona rng.FormatConditions.Delete 'Definiranje i postavljanje kriterija za svaki uvjetni format Set condition1 = rng.FormatConditions.Add (xlCellValue, xlGreater, "= 80") Set condition2 = rng.FormatConditions. Dodaj (xlCellValue, xlLess, "= 50") 'Utvrđivanje i postavljanje formata koji će se primijeniti za svaki uvjet With condition1 .Font.Color = vbBlue .Font.Bold = True End With With condition2 .Font.Color = vbRed .Font. Bold = True End With End Sub

Sada kada pokrenemo ovaj kôd pomoću tipke F5 ili ručno, vidimo da se oznake manje od 50 ističu podebljano i crveno, dok se one veće od 80 ističu podebljano i plavo kako slijedi:

Napomena: Neka svojstva izgleda formatiranih ćelija koja se mogu koristiti s FormatCondition su:

Primjer # 2

Recimo da u gornjem primjeru imamo još jedan stupac u kojem se navodi da je učenik 'Topper' ako postigne više od 80 bodova, a protiv njega je napisan Pass / Fail. Sada želimo istaknuti vrijednosti navedene kao 'Topper' kao podebljano i plavo. Pogledajmo podatke sadržane u datoteci:

U ovom bi slučaju kôd / postupak radio na sljedeći način:

Kodirati:

Oblikovanje podteksta () Kraj pod

Definirajte i postavite format koji će se primijeniti za svaki uvjet

Kodirati:

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

U gornjem kodu možemo vidjeti da želimo testirati sadrži li raspon: 'C2: C11' niz: 'Topper', pa parametar: 'Onamestor' iz 'Format.Add' uzima nabrajanje: 'Xcontains' u testirajte ovo stanje u fiksnom rasponu (tj. C2: C11), a zatim napravite potrebno uvjetno formatiranje (promjene fonta) na tom rasponu.

Sada kada pokrenemo ovaj kod ručno ili pritiskom na tipku F5, vidimo da se vrijednosti ćelija s 'Topper' označavaju plavim i podebljanim slovima:

Napomena: Dakle, u gornja dva primjera vidjeli smo kako metoda 'Dodaj' funkcionira u slučaju bilo kojeg kriterija vrijednosti ćelije (numerički ili tekstualni niz).

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.
  • Da bismo primijenili više od tri uvjetna formata na raspon metodom 'Dodaj', možemo upotrijebiti 'Ako' ili 'odaberi slučaj'.
  • Ako metoda "Dodaj" ima parametar "Vrsta" kao: "xlExpression", tada se parametar "Operator" zanemaruje.
  • Parametri: "Formula1" i "Formula2" u metodi "Dodaj" mogu biti referenca na ćeliju, konstantna vrijednost, vrijednost niza ili čak formula.
  • Parametar: 'Formula2' koristi se samo kada je parametar: 'Operator' ili 'xlBetween' ili 'xlNotBetween', inače se zanemaruje.
  • Da bismo uklonili sve uvjetno oblikovanje s bilo kojeg radnog lista, možemo koristiti metodu 'Delete' kako slijedi:
Ćelije.FormatConditions.Delete

Zanimljivi članci...