Условно форматирање у програму Екцел ВБА
Можемо применити условно форматирање на ћелију или опсег ћелија у програму Екцел. Условни формат је формат који се примењује само на ћелије које испуњавају одређене критеријуме, рецимо вредности изнад одређене вредности, позитивне или негативне вредности или вредности са одређеном формулом итд. Ово условно форматирање се такође може извршити у програму екцел ВБА користећи „ Прикупљање услова формата “ у макро / процедури.
Услов формата користи се за представљање условног формата који се може поставити позивањем методе која враћа променљиву тог типа. Садржи све условне формате за један опсег и може садржати само три услова формата.
ФорматЦондитионс.Адд / Модифи / Делете се користи у ВБА за додавање / модификовање / брисање ФорматЦондитион објеката у колекцију. Сваки формат је представљен објектом ФорматЦондитион. ФорматЦондитионс је својство објекта Ранге и додајте следеће параметре са синтаксом испод:
ФорматЦондитионс.Адд (Типе, Оператор, Формула1, Формула2)
Синтакса формуле Додај има следеће аргументе:
- Тип: Обавезно, представља да ли се условни формат заснива на вредности присутној у ћелији или изразу.
- Оператор: Опционално, представља оператора који ће се користити са вредношћу када је 'Тип' заснован на вредности ћелије.
- Формула1: Опционално, представља вредност или израз повезан са условним форматом.
- Формула2: Опционално, представља вредност или израз повезан са другим делом условног формата када је параметар: 'Оператор' или 'клБетвеен' или 'клНотБетвеен.'
ФорматЦондитионс.Модифи такође има исту синтаксу као ФорматЦондитионс.Адд.
Следи списак неких вредности / набрајања које неки параметри „Додај“ / „Измени“ могу узети:

Примери условног форматирања ВБА
Испод су примери условног форматирања у екцелу ВБА.
Пример # 1
Рецимо да имамо Екцел датотеку која садржи име и ознаке неких ученика и желимо да ознаке означимо подебљано и плаво, што је веће од 80, и подебљано и црвено, што је мање од 50. Погледајмо податке садржане у датотеци:

Користимо ФорматЦондитионс.Додајте функцију као испод да бисте то постигли:
- Идите на Девелопер -> Висуал Басиц Едитор:

- Кликните десним тастером миша на назив радне свеске у окну „Пројецт-ВБАПројецт“ -> „Инсерт“ -> „Модуле“.

- Сада напишите код / процедуру у овај модул:
Шифра:
Подобликовање () Крај под

- Дефинишите променљиву рнг, цондитион1, цондитион2:
Шифра:
Подобликовање () Дим рнг Ас Ранге Дим цондитион1 Ас ФорматЦондитион, цондитион2 Ас ФорматЦондитион Енд Суб

- Подесите / поправите опсег на којем желите условно форматирање помоћу функције ВБА 'Ранге':
Шифра:
Подобликовање () Дим рнг Ас Ранге Дим цондитион1 Ас ФорматЦондитион, цондитион2 Ас ФорматЦондитион Сет рнг = Ранге ("Б2", "Б11") Енд Суб

- Избришите / обришите било које постојеће условно форматирање (ако постоји) из опсега, користећи „ФорматЦондитионс.Делете“:
Шифра:
Подобликовање () Дим рнг Ас Ранге Дим цондитион1 Ас ФорматЦондитион, цондитион2 Ас ФорматЦондитион Сет рнг = Ранге ("Б2", "Б11") рнг.ФорматЦондитионс.Делете Енд Суб

- Сада дефинишите и поставите критеријуме за сваки условни формат, користећи 'ФорматЦондитионс.Адд':
Шифра:
Подобликовање () Дим рнг Ас Ранге Дим цондитион1 Као ФорматЦондитион, цондитион2 Ас ФорматЦондитион Сет рнг = Ранге ("Б2", "Б11") рнг.ФорматЦондитионс.Делете Сет цондитион1 = рнг.ФорматЦондитионс.Адд (клЦеллВалуе, клГреатер, "= 80 ") Сет цондитион2 = рнг.ФорматЦондитионс.Адд (клЦеллВалуе, клЛесс," = 50 ") Енд Суб

- Дефинишите и подесите формат који ће се примењивати за сваки услов

Копирајте и налепите овај код у свој модул класе ВБА.
Шифра:
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
Сада када покренемо овај код помоћу тастера Ф5 или ручно, видимо да су ознаке мање од 50 истакнуте подебљано и црвено, док су оне веће од 80 подебљано и плаво на следећи начин:

Пример # 2
Рецимо да у горњем примеру имамо још једну колону у којој се наводи да је ученик „топпер“ ако постигне више од 80 оцена, у супротном је против њих написано Пасс / Фаил. Сада желимо да истакнемо вредности означене као „Топпер“ као подебљано и плаво. Погледајмо податке садржане у датотеци:

У овом случају, код / поступак би функционисао на следећи начин:
Шифра:
Обликовање подтекста () Крај под

Дефинишите и подесите формат који ће се примењивати за сваки услов
Шифра:
Суб ТектФорматтинг () са опсегом ("ц2: ц11"). ФорматЦондитионс.Адд (клТектСтринг, ТектОператор: = клЦонтаинс, Стринг: = "топпер") Витх .Фонт .Болд = Труе .Цолор = вбБлуе Енд Витх Енд Витх Енд Суб

У горњем коду можемо да видимо да желимо да тестирамо да ли опсег: 'Ц2: Ц11' садржи низ: 'Топпер', па параметар: 'Онаместор' из 'Формат.Адд' води набрајање: 'Ксцонтаинс' у тестирајте ово стање у фиксном опсегу (тј. Ц2: Ц11), а затим извршите потребно условно форматирање (промене фонта) на овом опсегу.
Сада када покренемо овај код ручно или притиском на тастер Ф5, видимо да су вредности ћелија са „Топпер“ истакнуте плавим и подебљаним словима:

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.
- Да бисмо применили више од три условна формата на опсег помоћу методе „Додај“, можемо да користимо „Ако“ или „изабери случај“.
- Ако метода „Додај“ има параметар „Тип“ као: „клЕкпрессион“, тада се параметар „Оператор“ занемарује.
- Параметри: „Формула1“ и „Формула2“ у методи „Додај“ могу бити референца на ћелију, константна вредност, вредност низа или чак формула.
- Параметар: 'Формула2' користи се само када је параметар: 'Оператор' или 'клБетвеен' или 'клНотБетвеен,' иначе се занемарује.
- Да бисмо уклонили сво условно форматирање са било ког радног листа, можемо користити методу „Избриши“ на следећи начин:
Целлс.ФорматЦондитионс.Делете