MS Excel – aktywny wiersz (VBA)

Trudność: 🔴 (trudne)


W arkuszach zawierających dużo danych łatwo się pogubić. Jednym z problemów jest “zgubienie” właściwego wiersza. A gdyby tak udało się zaznaczyć aktywny wiersz…

Najpierw szybkie zadanko: czy podświetlona transakcja jest przeterminowana?

Jak widzisz nie jest łatwo wzrokiem czy palcem przesunąć się do ostatniej kolumny, by odczytać wartość. Postaramy się temu zaradzić. Podam tu kilka metod. Wybierz tę, która Ci pasuje.

Do swoich eksperymentów możesz pobrać poniższy plik. Otwórz ten plik i próbuj w zakładce (arkuszu) LISTA.

Metoda VBA

Ta metoda jest trudniejsza, ale daje więcej satysfakcji z wykonanej pracy. Wymaga minimalnej wiedzy z zakresu makrodefinicji i VBA. Pobierz ten plik i wejdź do arkusza ListaVBA.

  • przejdź do arkusz (zakładki) ListaVBA
  • uruchom edytor VBA (lewy Alt + F11)
  • w panelu Project kliknij dwa razy na Arkusz3 (ListaVBA)
  • w górnym polu rozwijalnym zamiast (General) wybierz Worksheet
    Zauważ, że w polu po prawej jest już wybrane SelectionChange co oznacza aktywacje tego kodu za każdym razem, gdy zmieni się aktywna komórka
  • między liniami Private Sub… a End Sub wpisz
    Range(“B” & ActiveCell.Row & “:” & “M” & ActiveCell.Row).Interior.Color = RGB(222, 222, 222)

Wypróbuj. Kliknij na dowolną komórkę. Cały wiersz (od kolumny B do M) wypełni się szarym kolorem. Zmień zaznaczenie… szary kolor pojawi się w innym wierszu. Zawsze w aktywnym. Jednak pewnie już widzisz problem. Szary pozostaje do końca świata w wierszach już odwiedzonych. Naprawmy to wprowadzając dodatkową linię, która zaczyna od narzucenia brak wypełnienia w obszarze B5:M30. Całość kodu wygląda tak:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Range(“B5:M30”).Interior.Pattern = xlNone
Range(“B” & ActiveCell.Row & “:” & “M” & ActiveCell.Row).Interior.Color = RGB(222, 222, 222)
End Sub

Gotowe.

To rozwiązanie ma oczywiście wady, ale… od czegoś trzeba zacząć 🙂

PS. Książka do nauki MS Excel ma mniej kartek niż książka do nauki VBA. To pokazuje jak dużo możliwości daje VBA.