Utworzenie skrótu klawiszowego na zaznaczanie wiersza lub kolumny

Dziś przedstawię Wam prosty sposób na stworzenie w Excelu nowej funkcjonalności i przypisanie do niej skrótu klawiszowego. W końcu każdy z nas może rozbudowywać Excela i w pewnym sensie stać się jego developerem. 🙂

Zaznaczanie wiersza
W Excelu możemy zaznaczyć cały wiersz za pomocą skrótu Shift+SPACJA lub też całą kolumnę za pomocą Ctrl+SPACJA. Zdarza się jednak, że przeglądając szereg danych chcielibyśmy przechodzić w dół z jednoczesnym zaznaczeniem wiersza. Aby to zrobić musimy użyć kombinacji najpierw strzałka w dół a następnie Shift+SPACJA. Niestety nie ma skrótu, który robiłby to za jednym zamachem. Jak stworzyć taki skrót?

Najpierw umieśćmy poniższy KOD VBA w Module w Skoroszycie Makr Osobistych. Aby to zrobić należy znaleźć plik PERSONAL (Skoroszyt makr osobistych) i umieścić tam makro. Robimy to ponieważ chcemy, aby stworzone przez nas makro było dostępne dla wszystkich plików Excela na tym komputerze.

Jak stworzyć i znaleźć skoroszyt makr osobistych (plik PERSONAL) znajdziecie tutaj:
https://heap.pl/jak-zrobic-aby-nasze-makra-byly-widoczne-w-kazdym-pliku-excela/

Należy wkleić poniższy kod do Module w pliku PERSONAL.xlsb

(Jak umieszczać kod w pliku znajdziesz we wpisie https://heap.pl/kurs-vba-cz-0-jak-zaczac-pierwsze-makro-instrukcja-dla-zielonych/)

Sub WierszWGore()
If Selection.Row <> 1 And Selection.Rows.Count = 1 Then
Selection.Offset(-1, 0).EntireRow.Select
End If
End Sub

Następnie (po wklejeniu makra) chcemy nadać skrót klawiszowy do powyższej procedury. W tym celu klikamy w zakładkę Deweloper (jak włączyć na wstążce Dewelopera zobaczycie tutaj: https://heap.pl/kurs-vba-cz-0-jak-zaczac-pierwsze-makro-instrukcja-dla-zielonych/). W Deweloperze znajdujemy przycisk Makra.

1

Następnie otworzy nam się okienko Makro gdzie widzimy naszą procedurę o nazwie WierszWGore.

Zaznaczanie 1 wiersza w górę

okienko

Klikamy w przycisk Opcje…

okienko2

Tutaj możemy nadać skrót do makra. My nadamy skrót Ctrl+Shift+W, dlatego w puste miejsce wpisujemy wielką literę W (ten skrót jest najczęściej wolny, więc bez obaw możemy go wykorzystać).

okienko3

Oto w ten sposób stworzyliśmy nową funkcjonalność w Excelu i teraz wciskając kombinację klawiszy Ctrl+Shift+W zaznaczamy wiersz powyżej.

Analogicznie możemy stworzyć kolejne skróty i tak np:

Zaznaczanie 1 wiersza w dół

Sub WierszWDol()
If Selection.Row <> Application.Rows.Count And Selection.Rows.Count = 1 Then
Selection.Offset(1, 0).EntireRow.Select
End If
End Sub

Następnie nadajemy skrót klawiszowy np. Ctrl+Shift+S (zgodnie z powyższym opisem – zakładka Deweloper, następnie przycisk Makra)

Zaznaczanie 1 kolumny w prawo

Sub KolumnaWPrawo()
If Selection.Column <> Application.Columns.Count And Selection.Columns.Count = 1 Then
Selection.Offset(0, 1).EntireColumn.Select
End If
End Sub

Następnie nadajemy skrót klawiszowy np. Ctrl+Shift+D (zgodnie z powyższym opisem – zakładka Deweloper, następnie przycisk Makra)

Zaznaczanie 1 kolumny w lewo

Sub KolumnaWLewo()
If Selection.Column <> 1 And Selection.Columns.Count = 1 Then
Selection.Offset(0, -1).EntireColumn.Select
End If
End Sub

Następnie nadajemy skrót klawiszowy np. Ctrl+Shift+A (zgodnie z powyższym opisem – zakładka Deweloper, następnie przycisk Makra)

Dodatkowe wyjaśnienia
Dlaczego wklejamy powyższy kod a nie samą linijkę:

Selection.Offset(1, 0).EntireRow.Select

Umieszczamy instrukcję warunkową IF, aby nie pojawiał się błąd gdy np. zaznaczymy 1 wiersz i będziemy chcieli przesunąć się w górę. W tym celu instrukcja warunkowa:

If Selection.Row <> 1 Then

sprawdza czy zaznaczony wiersz jest wierszem pierwszym, ponieważ nie da się zaznaczyć wiersza zerowego (inaczej skutkowałoby to pojawieniem się błędu).

Za każdym razem sprawdzamy też czy liczba wierszy lub kolumn jest równa 1. Dlatego jednocześnie sprawdzamy 2 warunki:

If Selection.Row <> 1 And Selection.Rows.Count = 1 Then
Selection.Offset(-1, 0).EntireRow.Select
End If

W procedurze zaznaczania wiersza poniżej sprawdzamy czy zaznaczony wiersz nie jest ostatnim wierszem w Excelu oraz czy mamy zaznaczony jeden wiersz.

If Selection.Row <> Application.Rows.Count And Selection.Rows.Count = 1 Then
Selection.Offset(1, 0).EntireRow.Select
End If

Analogicznie postępujemy z kolumnami.

Dla tych co nie wiedzą dodam tylko, że właściwość Offset(1,0) powoduje przesunięcie zakresu (w naszym przypadku Selection, czyli zaznaczenie) o 1 wiersz w dół. Właściwość EntireRow, czyli działamy na całym wierszu a metoda Select powoduje zaznaczenie (w naszym przypadku całego wiersza, ponieważ mamy EntireRow).

Analogicznie z kolumnami. Offset(0,1) to przesunięcie o 1 kolumnę w prawo. EntireColumn oznacza, że działamy na całej kolumnie, a metoda Select powoduje, że dokonujemy zaznaczenia całej kolumny (EntireColumn).

—————————-

Tutaj znajduje się gotowy plik PERSONAL.xlsb, który w razie potrzeby można wkleić do folderu:

..\Users\NAZWA_UŻYTKOWNIKA\AppData\Roaming\Microsoft\Excel\XLSTART

Dzięki temu będziemy mogli zaznaczać:
- wiersz w górę za pomocą skrótu Ctrl+Shift+W
- wiersz w dół za pomocą Ctrl+Shift+S
- kolumna w prawo za pomocą Ctrl+Shift+D
- kolumna w lewo za pomocą Ctrl+Shift+A