Како направити условно обликовање помоћу ВБА у Мицрософт Екцелу

Anonim

Хајде да насликамо слику Моналиса и оставимо Пикаса иза себе користећи ВБА. Спремни, припремите се…

Чекати! Чекати! Држите своје коње. Само ћемо користити ВБА за условно обликовање и то је лакше од сликања? обликована птица.

Генеричка синтакса ВБА условног обликовања

Ако је услов од Ранге (ранге) .Интериор.ЦолорИндек = 1-56

Проверите стање у услову, а затим форматирајте опсег помоћу својства .итериоур.цолориндек објекта Ранге. Индекс боја има 56 боја. Идите да се играте Холи са њима и истражите који број има коју боју.
Хајде сада да то схватимо на примеру

Пример: ВБА код за условно обликовање ћелија

Дакле, ово је сценарио, имамо списак случајних људи са њиховим годинама и старосном групом.
Како би лако било да се старосној групи каже особа гледајући само њихова имена.
Сада да то урадим, желим ВБА формат Име ЦРВЕНО ако је одрасла особа, ЖУТО ако је тинејџер и ЗЕЛЕНО ако је дете и ништа ако је ћелија празна.

Под ФорматУсингВБА () Дим рнг Ас Ранге Дим ластРов Ас Лонг ластРов = Целлс (Ровс.Цоунт, 3) .Енд (клУп) .Ров Сет рнг = Ранге ("Ц2: Ц" & ластРов) За сваку ћелију У рнг Иф ћелији. Валуе2 = "Адулт" Затим Ранге (целл.Аддресс) .Оффсет (0, -2) .Интериор.ЦолорИндек = 3 ЕлсеИф целл.Валуе2 = "КИД" Затим Ранге (целл.Аддресс) .Оффсет (0, -2). Интериор.ЦолорИндек = 4 ЕлсеИф целл.Валуе2 = "Тинејџер" Затим опсег (целл.Аддресс) .Оффсет (0, -2) .Интериор.ЦолорИндек = 6 Елсе Ранге (целл.Аддресс) .Оффсет (0, -2). Интериор.ЦолорИндек = 0 Енд Иф Нект целл Енд Суб

Да бих покренуо овај код директно са листа, нацртао сам дугме на истом листу и доделио му овај макро. Сада, кад год притиснете дугме „Обликовање“, ваш код ће се покренути и ажурирати ћелије имена бојом у зависности од њихове старосне групе. Како? Хајде да сазнамо.

Објашњење кода:

Дим рнг Ас РангеДим ластРов Ас Лонг Ове две линије су декларације променљивих. рнг за Ранге који садржи старосну групу и ластРов да бисте добили последњи број празног реда који није празан. 
ластРов = Целлс (Ровс.Цоунт, 3) .Енд (клУп) .РовОва линија враћа број последњег реда у променљивој ластРов.
Сет рнг = Ранге ("Ц2: Ц" & ластРов) Ова линија поставља опсег почевши од Ц2 до последњег реда. То чини ваш код динамичким. Додајете нове редове својим подацима и он ће открити и сачувати у новом опсегу у променљивој рнг.
За сваку ћелију У рнг Иф целл.Валуе2 = "Адулт" Затим Ранге (целл.Аддресс) .Оффсет (0, -2) .Интериор.ЦолорИндек = 3 ЕлсеИф целл.Валуе2 = "КИД" Затим Ранге (целл.Аддресс). Оффсет (0, -2) .Интериор.ЦолорИндек = 4 ЕлсеИф целл.Валуе2 = "Теенагер" Затим Ранге (целл.Аддресс) .Оффсет (0, -2) .Интериор.ЦолорИндек = 6 Елсе Ранге (целл.Аддресс). Оффсет (0, -2) .Интериор.ЦолорИндек = 0 Енд Иф Нект ћелија 

Ово је главни сегмент.

За сваку ћелију У рнг 

Прва линија води петљу до свих ћелија у вашем опсегу. Ако је целл.Валуе2 = "Одрасли" Затим
Следећи ред је провера стања. Он проверава да ли је тренутна вредност ћелије Адулт или не.
Ако је одговор да, следећи ред се покреће, у супротном прелази на следећи иф наредбу.Ранге (целл.Аддресс) .Оффсет (0, -2) .Интериор.ЦолорИндек = 3
Сада, ако ИФ услов врати ТРУЕ, онда ова линија поставља боју ћелије на ЦолорИндек 3 за РЕД.

Слично томе, следећи ИФ изрази се покрећу и предузимају радње како је наведено.

Дакле, да, можете условно обликовати опсеге користећи ВБА. Интерна метода објекта Ранге контролише многа друга својства за форматирање. Требало би да се играте са њима, неће вам нашкодити, али ћете сигурно научити. И ако се суочите са било каквом потешкоћом од онога због чега сам ја овде. Поставите своја питања у одељку за коментаре.

Скини докуменат

Условно обликовање помоћу ВБА у програму Мицрософт Екцел

Популарни чланци:

50 Екцел пречица за повећање продуктивности

Како се користи функција ВЛООКУП у програму Екцел

Како се користи функција ЦОУНТИФ у програму Екцел

Како се користи функција СУМИФ у програму Екцел