Po dłuższej wakacyjnej przerwie czas na kolejny wpis tym
razem wpis z pogranicza VBA i zaawansowanej techniki pracy z Excelem- jak
uzyskać efekt podświetlenia dla aktywnego wiersza?
Wariant 1- tylko VBA
Wariant ten ma podstawową wadę polegającą na tym, że
dokonujemy ‘podmiany’ wypełnienia w bieżącym wierszu, a przez to nie jesteśmy w
stanie efektywnie przywrócić poprzedniego układu kolorów, o ile takie istniały
(pomijam możliwość tworzenia zaawansowanych konstrukcji programistycznych).
Zaletą jest to, że możemy podświetlić szerszy obszar niż tylko ten
odpowiadający pojedynczemu wierszowi.
Niezbędny kod VBA wymaga oprogramowania zdarzenia
Selection_Change. W tym celu proszę w wybranym module arkuszowym wkleić
poniższy kod. Dodatkowe informacje znajdują się wewnątrz kodu w postaci
komentarzy.
Wariant 2- VBA + formatowanie warunkowe
Wariant ten jest o wiele bardziej efektywny i wydajny. Co
najważniejsze- nie zastępuje innych kolorów i formatowania występującego w
arkuszu.
Krok 1- zaznaczamy obszar, w którym ma funkcjonować
podświetlanie wiersza- w naszym przykładzie A1:K20 (ważne, obszar zaznaczamy od
komórki A1 w kierunku K20, nie odwrotnie)
Krok 2- ustawiamy formatowanie warunkowe: Menu >>
Narzędzia Główne >>Formatowanie Warunkowe >> Nowa Reguła… >>
Użyj formuły do określenia komórek… >> w miejsce formuły wstawiamy =KOMÓRKA("wiersz")=WIERSZ(A1)
>> określamy formatowanie po wciśnięciu przycisku >>Formatuj…
>> Akceptujemy wszystkie ustawienia.
Ważne! Komórkę A1 w podaje formule należy odpowiednio zmienić w przypadku zaznaczenia innego obszaru niż przykładowe A1:K20
Krok 3- ostatni krok to wymuszenie przeliczenia komórek po każdej
zmianie zaznaczenia. W tym celu w module arkuszowym po stronie edytora VBA dodajemy
prostą obsługę zdarzenia Selection_Change:
Przy okazji serdecznie zapraszam na jesienne kursy z programowania VBA. Tym razem zaplanowaliśmy kilka terminów w Warszawie, Krakowie i Wrocławiu. Nasze szkolenia jak zawsze przygotowane są na najwyższym poziomie, w oparciu o wieloletnią praktyczną widzę i ciągle zdobywane i poszerzane doświadczenie.