Excel nie posiada mechanizmu, który pozwalałby wyróżnić przecięcie aktywnego wiersza z aktywną kolumną. Potrzebujemy makra, które będzie reagować na zmianę zaznaczenia komórki. Jak je napisać? O tym dowiesz się z poniższego tekstu.
Problem braku podświetlenia
Excel w dość subtelny sposób wyróżnia wiersze i kolumny, które odwołują się do zaznaczonego obszaru komórek.
Dla Excela 365 są to:
- Zielona kreska na krawędziach nagłówków. Dla kolumn jest pozioma, dla wierszy pionowa. Taki sam kolor posiada obwódka dla zaznaczonych komórek.
- Przyciemnione nagłówki. Widać, że kolor zmienia się z szarego na ciemnoszary.
- Zielony kolor czcionki. Jeśli dobrze się przyjrzymy, to zobaczymy, że numery wierszy i kolumn zmieniają swoją barwę z czarnego na ciemnozielony.
Zakres ciągły
W przypadku zaznaczenia zakresu komórek, sprawa nie wygląda aż tak źle.
Pojedyncza komórka
Problem pojawia się, gdy w tabeli mamy wiele kolumn i zaznaczamy tylko pojedynczą komórkę. Odczytanie danych należących do takiego wiersza wcale nie jest łatwe!
Podświetlenie vs. wyróżnienie
Rozwiązaniem problemu może być makro, które zaznacza aktywny wiersz i aktywną kolumnę w obrębie tabeli źródłowej.
Celowo nie używam słowa podświetla ponieważ w takim makrze lepiej nie używać formatowania.
Dlaczego? Otóż podświetlenie wymagałoby wyczyszczenia koloru czcionki lub koloru wypełnienia w całej tabeli. Być może użytkownik ma wyróżnione kolorem jakieś ważne dane i nie chce tego formatowania utracić. Bezpieczniejsze wydaje się więc zaznaczenie aktywnego wiersza i kolumny.
Screen z rozwiązaniem
Zaznaczenie przecięcia aktywnego wiersza z aktywną kolumną rzuca się w oczy i pozwala lepiej odczytać interesujące nas dane.
Kod makra
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
Private Sub Worksheet_SelectionChange(ByVal Target As Range) 'Makro zaznacza aktywny wiersz i aktywną komórkę w tabeli Dim rngTabela As Excel.Range ' Tabela danych Dim rngUnia As Excel.Range ' Aktywny wiersz i kolumna 'Pozwalamy tylko na zaznaczenie jednej komórki 1 If Target.Cells.Count <> 1 Then Exit Sub 'Przypisz zmienną dla całej tabeli danych 2 Set rngTabela = Range("A1").CurrentRegion 'Sprawdź czy zaznaczyliśmy komórkę z tabeli 3 If Not Intersect(Target, rngTabela) Is Nothing Then 'Przypisz do zmiennej Range aktywny wiersz i kolumnę 'Pomiń komórki wychodzące poza tabelę 4 Set rngUnia = Application.Intersect( _ Union(Target.EntireRow, Target.EntireColumn), rngTabela) 'Wyłącz zdarzenia żeby nie uruchamiać ponownie makra 5 Application.EnableEvents = False 6 rngUnia.Select ' zaznacz aktywny wiersz i komórkę 7 Application.EnableEvents = True 8 End If 'If Not Intersect(Target, rngTabela) Is Nothing Then End Sub |
Analiza makra
- Makro działa w obszarze całej tabeli. Zakładam, że zaczyna się ona od komórki A1 i nie posiada pustych wierszy w środku.
- Jeżeli użytkownik kliknie obszar poza tabelą, wówczas nic nie zostanie zaznaczone. Metoda Intersect sprawdza czy dwa zakresy mają część wspólną.
- Makro działa tylko dla jednej komórki. Można to zmienić w kodzie.
- Tworzymy jeden zakres typu Range. W naszym przypadku pobieramy do zmiennej rngUnia aktywny wiersz i aktywną kolumnę. Chcemy jednak, aby zaznaczał się tylko obszar w obrębie naszej tabeli. W tym celu wykorzystuję ponownie metodę Intersect (część wspólna z tabeli i przecięcia).
- Przed zaznaczeniem zakresu musimy wyłączyć na chwilę zdarzenia. Jest to konieczne ponieważ zaznaczenie nowego zakresu w arkuszu wyzwala ponowne zdarzenie Worksheet_SelectionChange. Mielibyśmy do czynienia z rekurencją – procedura odwoływałaby się do samej siebie.
- Możemy ponownie włączyć zdarzenia. Ale dopiero po zaznaczeniu aktywnego wiersza i kolumny.
Podsumowanie
Makro podświetlające przecięcie aktywnego wiersza i kolumny w Excelu to skuteczny sposób na poprawę czytelności danych, zwłaszcza w dużych tabelach. Dzięki temu rozwiązaniu łatwiej jest śledzić informacje z pojedynczej komórki, bez ryzyka utraty istniejącego formatowania. Kod działa dynamicznie, reagując na zmianę zaznaczenia komórki, a mechanizm zabezpieczający przed rekurencją zapewnia stabilność działania. To praktyczne narzędzie, które znacząco usprawnia nawigację w arkuszu.
Plik XLSM
Pobierz plik i przeanalizuj kod metodą krokową (F8).