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:

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:

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