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.
04 | Dim prevTarget As Range |
06 | Private Sub Worksheet_SelectionChange( ByVal Target As Range) |
13 | prevTarget.EntireRow.Interior.Color = xlNone |
16 | Set prevTarget = Target |
17 | Target.EntireRow.Interior.Color = vbYellow |
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:
1 | Private Sub Worksheet_SelectionChange( ByVal Target As Range) |
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.
Brak komentarzy:
Prześlij komentarz