Координативен избор

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

И ако тековниот ред и колона се означени кога активната ќелија се движи низ листот? Еден вид координатен избор како овој:

Подобро од владетел, нели?

Постојат неколку начини со различна сложеност за да се спроведе ова. Секој метод има свои добрите и лошите страни. Ајде да ги разгледаме во детали.

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

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

Отворете лист со табела во која сакате да добиете таков избор на координати. Кликнете со десното копче на јазичето на листот и изберете ја командата од контекстното мени Изворниот текст (Изворен код).Треба да се отвори прозорецот Visual Basic Editor. Копирајте го овој текст од овие три макроа во него:

Dim Coord_Selection As Boolean 'Глобална променлива за вклучување/исклучување на избор Sub Selection_On() 'Макро при селекција Coord_Selection = True End Sub Selection_Off() 'Макро исклучен избор Coord_Selection = Неточен крај Под 'Главна процедура што врши избор Приватен под работен лист_SelectionChange(ByVal Опсег) Затемнет работен опсег како опсег ако Target.Cells.Count > 1 Потоа излезете од Sub 'ако се избрани повеќе од 1 ќелија, излезете ако Coord_Selection = False Потоа излезете од Sub' ако изборот е исклучен, излезете од Application.ScreenUpdating = False Set WorkRange = Range (" A6:N300") 'адреса на работниот опсег во кој изборот е видлив  

Променете ја адресата на работниот опсег во ваша - токму во овој опсег ќе работи нашиот избор. Потоа затворете го уредувачот на Visual Basic и вратете се на Excel.

Притиснете ја кратенката на тастатурата ALT + F8за да отворите прозорец со список на достапни макроа. Макро Избор_Вклучено, како што може да претпоставите, вклучува избор на координати на тековниот лист и макро Selection_Off – го исклучува. Во истиот прозорец, со кликнување на копчето параметри (Опции) Можете да доделите кратенки на тастатурата на овие макроа за лесно стартување.

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

  • релативна леснотија на имплементација
  • селекција - операцијата е безопасна и не ја менува содржината или форматирањето на ќелиите на листовите, сè останува како што е

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

  • таквиот избор не работи правилно ако има споени ќелии на листот - сите редови и колони вклучени во унијата се избираат одеднаш
  • ако случајно го притиснете копчето Delete, тогаш не само активната ќелија ќе се исчисти, туку и целата избрана област, односно избришете ги податоците од целиот ред и колона

Метод 2. Оригинален. CELL + Функција за условно форматирање

Овој метод, иако има неколку недостатоци, ми се чини многу елегантен. За да се имплементира нешто користејќи ги само вградените алатки на Excel, минимално влегувањето во програмирање во VBA е аеробатизам 😉

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

  • коден збор за параметарот, како што е „колона“ или „ред“
  • адресата на ќелијата за која сакаме да ја одредиме вредноста на овој параметар

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

Втората компонента на овој метод е условно форматирање. Оваа исклучително корисна функција на Excel ви овозможува автоматски да ги форматирате ќелиите доколку ги исполнуваат одредените услови. Ако ги комбинираме овие две идеи во една, го добиваме следниов алгоритам за спроведување на нашиот избор на координати преку условно форматирање:

  1. Ја избираме нашата табела, односно оние ќелии во кои во иднина треба да се прикажува изборот на координатите.
  2. Во Excel 2003 и постари, отворете го менито Формат – Условно форматирање – Формула (Формат - Условно форматирање - Формула). Во Excel 2007 и понови - кликнете на јазичето Почетна (Дома)копчето. Условно форматирање – Креирај правило (Условно форматирање - Правило за создавање) и изберете го типот на правило Користете формула за да одредите кои ќелии да се форматираат (Користете формула)
  3. Внесете ја формулата за нашиот избор на координати:

    =ИЛИ(CELL(„ред“)=ROW(A2),CELL(„колона“)=КОЛУМНА(A2))

    =ИЛИ(CELL(«ред»)=ROW(A1),CELL(«колона»)=КОЛУМНА(A1))

    Оваа формула проверува дали бројот на колоната на секоја ќелија во табелата е ист со бројот на колоната на тековната ќелија. Исто и со колоните. Така, ќе бидат пополнети само оние ќелии што имаат или број на колона или број на ред што одговара на тековната ќелија. И ова е избор на координати во облик на крст што сакаме да го постигнеме.

  4. Кликнете на копчето Рамка (Формат) и поставете ја бојата за полнење.

Сè е речиси подготвено, но има една нијанса. Факт е дека Excel не ја смета промената во изборот како промена на податоците на листот. И, како резултат на тоа, не предизвикува повторно пресметување на формулите и повторно обојување на условното форматирање само кога се менува позицијата на активната ќелија. Затоа, ајде да додадеме едноставно макро во модулот за листови што ќе го направи тоа. Кликнете со десното копче на јазичето на листот и изберете ја командата од контекстното мени Изворниот текст (Изворен код).Треба да се отвори прозорецот Visual Basic Editor. Копирајте го овој текст од ова едноставно макро во него:

Приватен под работен лист_SelectionChange(ByVal Target As Range) ActiveCell.Calculate End Sub  

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

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

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

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

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

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

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

Отворете лист со табела во која сакате да добиете таков избор на координати. Кликнете со десното копче на јазичето на листот и изберете ја командата од контекстното мени Изворниот текст (Изворен код).Треба да се отвори прозорецот Visual Basic Editor. Копирајте го овој текст од овие три макроа во него:

Затемнето координа_избор како Булова подизбор_вклучено() Координа_избор = Вистински крај под избор_исклучено() Координа_избор = погрешен крај Под приватен под работен лист_Изборна промена(БиВал цел како опсег) Затемнет работен опсег како опсег, вкрстен опсег како опсег: Работа:7" 'адрес рабочего диапазона со таблицей If Target.Count > 300 Потоа излезете од Sub If Coord_Selection = False, then WorkRange.FormatConditions.Delete Exit Sub End If Application.ScreenUpdating = False If Not Intersect(Target, WorkRange) Intersect/Intersect Работен опсег, унија(Target.EntireRow, Target.EntireColumn)) WorkRange.FormatConditions.Delete CrossRange.FormatConditions.Add Type:=xlExpression, Formula1:="=1" CrossRange.FormatConditions(1).ColorIndergFort. .Избриши End If End Sub  

Не заборавајте да ја смените адресата на работниот опсег во адресата на вашата маса. Затворете го уредувачот на Visual Basic и вратете се на Excel. За да ги користите додадените макроа, притиснете ја кратенката на тастатурата ALT + F8  и продолжи на ист начин како методот 1. 

Метод 4. Убава. Додаток FollowCellPointer

MVP на Excel, Јан Карел Питерс од Холандија, дава бесплатен додаток на неговата веб-страница Следете го CellPointer(36Kb), што го решава истиот проблем со цртање графички линии со стрелки со помош на макроа за да се означат тековната редица и колона:

 

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

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

  • Што се макроа, каде да вметнете макро код во Visual Basic

 

Оставете Одговор