Избор координата

Имате велики монитор, али столови са којима радите су још већи. И, гледајући преко екрана у потрази за потребним информацијама, увек постоји шанса да „склизнете“ очи на следећи ред и погледате у погрешном правцу. Чак познајем људе који за такве прилике увек држе близу себе дрвени лењир да га прикаче на линију на монитору. Технологије будућности! 

А ако су тренутни ред и колона истакнути када се активна ћелија помера преко листа? Ова врста одабира координата:

Боље од лењира, зар не?

Постоји неколико начина различите сложености да се ово спроведе. Свака метода има своје предности и мане. Хајде да их погледамо детаљно.

Метод 1. Очигледно. Макро који истиче тренутни ред и колону

Најочигледнији начин да решимо наш проблем „на челу“ – потребан нам је макро који ће пратити промену избора на листу и изабрати цео ред и колону за тренутну ћелију. Пожељно је и да можемо да омогућимо и онемогућимо ову функцију ако је потребно, тако да нас овакав избор у облику крста не спречава да уносимо, на пример, формуле, већ функционише само када прегледамо листу у потрази за потребним информације. Ово нас доводи до три макроа (одаберите, омогућите и онемогућите) које ће требати додати модулу листа.

Отворите лист са табелом у којој желите да добијете такав избор координата. Кликните десним тастером миша на картицу листа и изаберите команду из контекстног менија Изворни текст (Изворни код).Прозор Висуал Басиц Едитор-а би требало да се отвори. Копирајте у њега овај текст ова три макроа:

Дим Цоорд_Селецтион Ас Боолеан 'Глобална варијабла за избор он/офф Суб Селецтион_Он() 'Макро за избор Цоорд_Селецтион = Труе Енд Суб Селецтион_Офф() 'Макро искључен избор Цоорд_Селецтион = Фалсе Енд Суб 'Главна процедура која врши селекцију Привате Суб Ворксхеет_СелецтионВЦханге Ас Опсег) Затамни радни опсег као опсег ако је Таргет.Целлс.Цоунт > 1 Онда изађи из под 'ако је изабрано више од 1 ћелије, изађи из ако је Цоорд_Селецтион = Фалсе Онда изађи из под' ако је избор искључен, изађи из Апплицатион.СцреенУпдатинг = Фалсе Сет ВоркРанге = Ранге (" А6:Н300") 'адреса радног опсега унутар којег је видљив избор  

Промените адресу радног опсега на своју – у том опсегу ће функционисати наш избор. Затим затворите Висуал Басиц Едитор и вратите се у Екцел.

Притисните пречицу на тастатури АЛТ + ФКСНУМКСда отворите прозор са листом доступних макроа. Макро Селецтион_Он, као што можете претпоставити, укључује избор координата на тренутном листу и макро Селецтион_Офф – искључује га. У истом прозору, кликом на дугме parametri (Опције) Овим макроима можете доделити пречице на тастатури ради лакшег покретања.

Предности ове методе:

  • релативна лакоћа имплементације
  • селекција – операција је безопасна и ни на који начин не мења садржај или форматирање ћелија листа, све остаје како јесте

Недостаци ове методе:

  • такав избор не функционише исправно ако на листу постоје спојене ћелије – сви редови и колоне укључени у унију се бирају одједном
  • ако случајно притиснете тастер Делете, тада ће бити обрисана не само активна ћелија, већ и цела изабрана област, односно избрисани подаци из целог реда и колоне

Метод 2. Оригинал. ЋЕЛИЈА + функција условног форматирања

Овај метод, иако има пар недостатака, чини ми се веома елегантним. Да бисте имплементирали нешто користећи само уграђене Екцел алате, минимално улазак у програмирање у ВБА је акробатика 😉

Метод се заснива на коришћењу функције ЦЕЛЛ, која може дати много различитих информација о датој ћелији – висину, ширину, број реда-колоне, формат броја, итд. Ова функција има два аргумента:

  • кодна реч за параметар, као што је „колона“ или „ред“
  • адресу ћелије за коју желимо да одредимо вредност овог параметра

Трик је у томе што је други аргумент опциони. Ако није наведено, узима се тренутна активна ћелија.

Друга компонента ове методе је условно форматирање. Ова изузетно корисна Екцел функција вам омогућава да аутоматски форматирате ћелије ако испуњавају одређене услове. Ако комбинујемо ове две идеје у једну, добићемо следећи алгоритам за имплементацију нашег одабира координата кроз условно форматирање:

  1. Бирамо нашу табелу, односно оне ћелије у којима би у будућности требало да се прикаже избор координата.
  2. У програму Екцел 2003 и старијим, отворите мени Формат – Условно обликовање – Формула (Формат — Условно обликовање — Формула). У програму Екцел 2007 и новијим – кликните на картицу Početna (Кућа)дугме Условно форматирање – Креирајте правило (Условно форматирање — Креирајте правило) и изаберите тип правила Помоћу формуле одредите које ћелије треба форматирати (Користите формулу)
  3. Унесите формулу за наш избор координата:

    =ИЛИ(ЦЕЛЛ(“ред”)=РОВ(А2),ЦЕЛЛ(“колона”)=ЦОЛУМН(А2))

    =ИЛИ(ЦЕЛЛ(«ред»)=РЕД(А1),ЦЕЛЛ(«колона»)=ЦОЛУМН(А1))

    Ова формула проверава да ли је број колоне сваке ћелије у табели исти као број колоне тренутне ћелије. Исто тако и са колонама. Дакле, биће попуњене само оне ћелије које имају или број колоне или број реда који одговара тренутној ћелији. А ово је избор координата у облику крста који желимо да постигнемо.

  4. Притисните дугме Оквир (Формат) и подесите боју испуне.

Све је скоро спремно, али постоји једна нијанса. Чињеница је да Екцел не сматра промену у избору као промену података на листу. И, као резултат, не покреће поновно израчунавање формула и поновно бојење условног обликовања само када се промени позиција активне ћелије. Стога, додајмо једноставан макро модулу листа који ће то учинити. Кликните десним тастером миша на картицу листа и изаберите команду из контекстног менија Изворни текст (Изворни код).Прозор Висуал Басиц Едитор-а би требало да се отвори. Копирајте овај текст овог једноставног макроа у њега:

Привате Суб Ворксхеет_СелецтионЦханге(БиВал Таргет Ас Ранге) АцтивеЦелл.Цалцулате Енд Суб  

Сада, када се избор промени, покренуће се процес поновног израчунавања формуле са функцијом ЋЕЛИЈА у условном форматирању и преплави тренутни ред и колону.

Предности ове методе:

  • Условно форматирање не крши прилагођено обликовање табеле
  • Ова опција избора исправно функционише са спојеним ћелијама.
  • Нема ризика од брисања читавог реда и колоне података приликом случајног клика Избрисати.
  • Макрои се минимално користе

Недостаци ове методе:

  • Формула за условно форматирање мора се унети ручно.
  • Не постоји брз начин да се омогући/онемогући такво форматирање – оно је увек омогућено док се правило не избрише.

Метод 3. Оптимално. Условно форматирање + макрои

Златна средина. Користимо механизам за праћење селекције на листу помоћу макроа из методе-1 и додајемо му безбедно истицање помоћу условног форматирања из методе-2.

Отворите лист са табелом у којој желите да добијете такав избор координата. Кликните десним тастером миша на картицу листа и изаберите команду из контекстног менија Изворни текст (Изворни код).Прозор Висуал Басиц Едитор-а би требало да се отвори. Копирајте у њега овај текст ова три макроа:

Дим Цоорд_Селецтион Ас Боолеан Суб Селецтион_Он() Цоорд_Селецтион = Труе Енд Суб Суб Селецтион_Офф() Цоорд_Селецтион = Фалсе Енд Суб Привате Суб Ворксхеет_СелецтионЦханге(БиВал Таргет Ас Ранге) Дим ВоркРанге Ас Ранге, ЦроссРанге Ас Ранге7 Сет ВоркРанге("300") 'адрес рабочего диапазона с таблице Ако Таргет.Цоунт > 1 Онда Екит Суб Иф Цоорд_Селецтион = Фалсе Тхен ВоркРанге.ФорматЦондитионс.Делете Екит Суб Енд Иф Апплицатион.СцреенУпдатинг = Фалсе Иф Нот Интерсецт(Таргет, ВоркРанге) Ис Нотхинг тхен Сет ЦроссРанге = Интерсецт( ВоркРанге, Унион(Таргет.ЕнтиреРов, Таргет.ЕнтиреЦолумн)) ВоркРанге.ФорматЦондитионс.Делете ЦроссРанге.ФорматЦондитионс.Адд Типе:=клЕкпрессион, Формула1:="=1" ЦроссРанге.ФорматЦондитионс(1).Интериор.ЦолорИндек.ФорматЦондитионс = 33ди ТаргетЦондитионс. .Делете Енд Иф Енд Суб  

Не заборавите да промените адресу радног опсега у адресу своје табеле. Затворите Висуал Басиц Едитор и вратите се у Екцел. Да бисте користили додате макрое, притисните пречицу на тастатури АЛТ + ФКСНУМКС  и поступите на исти начин као метод 1. 

Метод 4. Лепа. Додатак ФолловЦеллПоинтер

МВП Екцел-а Јан Карел Пиетерсе из Холандије поклања бесплатан додатак на својој веб страници ФолловЦеллПоинтер(36Кб), који решава исти проблем цртањем графичких линија са стрелицама користећи макрое за истицање тренутног реда и колоне:

 

Лепо решење. Не без грешака на местима, али свакако вреди покушати. Преузмите архиву, распакујте је на диск и инсталирајте додатак:

  • у програму Екцел 2003 и старијим – преко менија Услуга – Додаци – Преглед (Алатке — Додаци — Прегледај)
  • у Екцел 2007 и касније, кроз Датотека – Опције – Додаци – Иди – Прегледај (Датотека — Опције програма Екцел — Додаци — Иди на — Прегледај)

  • Шта су макрои, где да убаците макро код у Висуал Басиц

 

Ostavite komentar