Od czasu do czasu przydaje się możliwość wyróżnienia (podświetlenia) aktywnego wiersza lub kolumny. Dzisiaj napiszę o bardzo prostej metodzie pozwalającej osiągnąć ten efekt. Wykorzystamy formatowanie warunkowe oraz kilka linijek kodu VBA.
Doskonale wiesz, że korzystając z formatowania warunkowego możesz zmienić format (wyróżnić) komórki spełniające określone kryteria. W naszym przypadku, zaznaczone muszą zostać tylko te komórki, które leżą w wierszu, w którym znajduje się aktywna komórka. Nasze, przykładowe, dane wyglądać będą tak, jak na rysunku poniżej.

Zaznacz interesujący Cię zakres komórek i wybierz z menu Formatowanie warunkowe. Jako warunek wybierz „formuła jest” i wprowadź następującą formułę.
= WIERSZ(C9)=aktywnywiersz

Uwaga: Adres komórki po lewej stronie formuły (u mnie C9) musi odpowiadać AKTYWNEJ KOMÓRCE zaznaczonego zakresu. Spójrz na rysunek poniżej. Widać na nim, że w zaznaczonym obszarze jedna komórka (jeżeli nic po drodze nie „namieszasz” będzie to komórka w lewym górnym rogu zakresu) nie jest pokolorowana (nie ma niebieskiego tła). Ta właśnie komórka jest komórką aktywną i adresu tej właśnie komórki powinieneś użyć w formatowaniu warunkowym. Jak doskonale widać, w naszym przykładzie, jest to komórka C9.

Zapis WIERSZ(C9)=aktywnywiersz oznacza mniej więcej tyle, że komórka wybranego zakresu zostanie sformatowana jeżeli numer wiersza tej komórki równy jest wartości przechowywanej w zdefiniowanej nazwie aktywnywiersz.
To, co teraz musisz zrobić to zdefiniować tę nazwę i znaleźć sposób w jaki przypisywać jej numer wiersza aktywnej komórki. Na początek zdefiniuj więc nową nazwę i nadaj jej, na początek, po prostu wartość zero.

Na koniec, musisz w jakiś sposób zmieniać, w zależności o wiersza, w którym znajduje się aktywna komórka, wartość przypisaną tej nazwie. Wykorzystamy w w tym celu VBA.


{ 23 comments… read them below or add one }
W załączniku zamiast pliku xls jest dokument z artykułem.
Uwaga bardzo trafna
Dziękuję. Plik już podmieniony.
Marcin
Bardzo fajne. Aczy można by to zrobić tak by podświetlany był wiersz w zależności od zawartości komórki. np. jeżeli w kom. c5 istnieje wpis „E 20/50″ wtedy wiersz będzie podświetlony. Najlepiej by było gdyby to działało w zależności od fragmentu tekstu Np. komórka zawiera „grz 500″ inna „al 500″ a ja chciałby by podświetlona była ta która zawiera fragment „grz”
Pozdrawaiam Marek Groblicki
Rozwiązań byłoby pewnie kilka. Możesz popróbować na przykłąd jakoś tak:
Zaznacz obszar, w którym chcesz, aby wiersze sie podświetlały(u mnie np. A1:F20). Następnie wybierz formatowanie warunkowe. Załóżmy, że w kolumnie C masz wpisy, które chcesz sprawdzać i na ich podstawie podświetlać (albo i nie) wiersze. Formuła do użycia w formatowaniu warunkowym mogłaby wyglądać na przykład tak:
=NIE(CZY.BŁĄD(SZUKAJ.TEKST(„*grz*”;$C1)))
Powinno działać
Marcin
Witam, Bardzo fajne i proste rozwiązanie (takie lubię najbardziej) – nie wpadłem do tej pory na takie wykorzystanie „nazw” – mogłoby się wydawać, że oczywiste!!! Na pewno w jakiś sposób wykorzystam – więc dzięki.
Pozdrawiam i zabieram się do dalszej eksploracji Twojego bloga.
Karimmo
Fajna propozycja, chciałem zastosować ale u mnie jest problem którego nie potrafię usunąć:
Mam tabelę, grupa(A8:a255),nazwa(b8:b255),cena netto(c8:c255),vat(d8:d255),brutto(e8:e255).
Do tej pory po kliknięciu w kolumnie b, wyświetlało mi się zdjęcie produktu:
‘Wyświetlenie zdjęcia
If Target.Column = 2 And Target.Row > 7 Then
plik = „c:\baza\kompletacja\foto\” & Cells(Target.Row, 13) [w kolumnie m jest nazwa pliku ze zdjęciem]
With UserForm1
.Caption = Target.Value ‘nazwa okienka
.Picture = LoadPicture(plik) ‘plik w okienku
.PictureSizeMode = fmPictureSizeModeZoom
.Show
Cells(Target.Row + 1, 2).Select
End With
End If
po dodaniu:
‘podświetlenie wiersza
‘Private Sub Worksheet_SelectionChange(ByVal Target As Range)
‘If Not Intersect(Target, Range(„a8:e255″)) Is Nothing Then
‘ActiveWorkbook.Names(„AktywnyWiersz”).RefersTo = „=” & ActiveCell.Row
‘End If
i kliknięciu w kolumnie b z nazwami produktów przelatuje całą bazę i po kolei wyświetla zdjęcia.
na początku mam:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Dim plik As String
Jak sprawić, aby wiersz się wyświetlał na zielono i jednocześnie żeby nie wyświetlał zdjęcia ?
podejrzewam konflikt BeforeDoubleClick z SelectionChange
Witam!
Mam pytanko. Nigdzie tego wcześniej nie widziałam. Jak się robi tak, jak zrobiłeś w pliku z przykładem, że jest widoczny tylko zakres A1:N38, a reszta kolumn i wierszy jest wyszarzona?
Pozdrowienia
Margerytka
@margerytka
Sugeruję poczytać o ukrywaniu kolumn i wierszy
Marcin
Wiedza tajemna, o której piszesz jest mi znana
)) Tylko nie wiedziałam, że można ukryć do końca wiersze i kolumny i że taki efekt można w ten sposób uzyskać. Nie sądziłam, że to takie proste
Dziękuję za ten bardzo przydatny mi trik z podświetleniem wiersza. Utworzyłem potrzebny mi arkusz w Excelu 2003 – tam wszystko było OK, ale niestety w pracy muszę pracować na OpenOffice 2.4.1 i tam to makro nie chce działać – openoffice ma inną składnię, czy też inne nazwy poleceń. Czy mógłbym prosić o pomoc i „przetłumaczenie” tego makra tak, by działało. Ja nie znam się kompletnie na VB, i niestety problem mnie przerasta, a od bardzo dawna szukałem czegoś takiego
Serdecznie pozdrawiam i proszę o pomoc – jeśli to możliwe.
@ Bogdan
Cieszę się, że opisywane przeze mnie rzeczy znajdują zastosowanie w Twojej pracy. Bardzo chętnie bym Ci pomógł, ale niestety kompletnie nie znam się na OpenOffice. Popytaj na którejś z grup dyskusyjnych poświęconych właśnie temu programowi.
Marcin
Spróbowałem pomocy na forum OpenOffice.pl,, ale jak na razie nikt mi nie pomógł. Dziękuję za podanie pomysłu, jak poradzić sobie z problemem.
Fajny trik.
Jedna uwaga – przeliczanie arkusza musi być ustawione na Automatyczne
Pozdrawiam
przyda sie, fajna stronka pozdr
A co zrobić żeby również była wyróżniona (podświetlona) aktywna kolumna?
Pozdrawiam
Marcin ta Twoja recepturka „=NIE(CZY.BŁĄD(SZUKAJ.TEKST(”*grz*”;$C1)))” jest po prostu genialna. Bardzo mi się przydała.
Wielkie dzięki.
Pozdrawiam
A czy da się zmienić kolor podświetlenia? Bo taki szary jest prawie niewidoczny…
I czy da się zrobić tak, żeby podświetlana była tylko aktywna komórka?
Bardzo przydatna funkcja ta “=NIE(CZY.BŁĄD(SZUKAJ.TEKST(”*grz*”;$C1)))”
Już mi śmiga w raporcie
Panowie i Panie..
A ja mam dla Was zagadkę na którą sam nie znam odpowiedzi a męczy mnie to już od dwóch dni i nie mogę dalej ruszyć z pracą. Zagadka dotyczy formatowania warunkowego.
Otóż czy ktoś z osób odwiedzających ten blog wie jak za pomocą VBA znaleźć wszystkie komórki w danym wierszu w których formatowanie warunkowe jest prawdą. Czyli komórka np podświetla się na czerwono, bo nie został spełniony warunek zapisany w formatowaniu warunkowym.
Spróbuje jeszcze jaśniej. mamy 10 komórek w wierszu. Każda posiada formatowanie warunkowe (jeżeli komórka nie równa się 6 to podświetl na czerwono). Wszystkie komórki mają wartość 6 tylko np przedostatnia wartość 9 (i tym samym świeci na czerwono). Jak za pomocą VBA znaleźć adres tej komórki.
Od razu zaznaczam, że polecenie Interior.ColorIndex nie działa. Gdyż zwraca ono „oryginalny kolor komórki” a nie kolor z formatowania warunkowego.
Ewentualne podpowiedzi proszę wysyłać na adres mrjerry@orange.pl Chętnie pomogę też w różnych Waszych problemach z VBA.
Pozdrawiam.
Mam pytanko!!!
Zastosowałem formatowanie warunkowe dla komórek w exelu. I tak jeżeli wystepuje tam format liczbowy to owszem działa Jeżeli natomist wprowadzę tekst lub znaki – tam to nie działa.
Bardzo się przydało
Trik bliski mojemu problemowi, natomiast poszukuję odpowiedzi czy da się zrobić, aby aktywną komórkę wrzucić do WYSZUKAJ.PIONOWO? Tzn., zakładając, że aktywna zawsze będzie w pierwszej kolumnie, funkcja ją „wyszukała” i zwróciła wartość z określonej komórki… albo bardziej leniwie – wyszukała wartość z określonej kolumny w jakiejkolwiek aktywnej komórce w wierszu…
Jeśli ktoś zna odpowiedź będę wdzięczny za pomoc:)
Fajna sprawa, sprawa ale jest problem:
Po wpisaniu kodu VBA, brak możliwości cofania zmian.
Można to jakość obejść