Funkcja Excel VBA OFFSET
Funkcja VBA Offset służy do przenoszenia lub odwoływania się do odniesienia pomijając określoną liczbę wierszy i kolumn, argumenty tej funkcji w VBA są takie same, jak argumenty w arkuszu.
Na przykład załóżmy, że masz zestaw danych podobny do poniższego.

Teraz z komórki A1 chcesz przejść o 4 komórki w dół i chcesz wybrać tę piątą komórkę, tj. Komórkę A5.
Podobnie, jeśli chcesz przejść w dół z 2 wierszy komórki A1 i przejść o 2 kolumny w prawo i wybrać tę komórkę, tj. Komórkę C2.
W takich przypadkach funkcja OFFSET jest bardzo pomocna. Zwłaszcza w VBA OFFSET Funkcja jest po prostu fenomenalna.
OFFSET jest używany z obiektem Range w Excel VBA
W VBA nie możemy bezpośrednio wpisać słowa OFFSET. Najpierw musimy użyć obiektu VBA RANGE, az tego obiektu zakresu możemy użyć właściwości OFFSET.
W programie Excel zakres to nic innego jak komórka lub zakres komórki. Ponieważ OFFSET odnosi się do komórek, musimy najpierw użyć obiektu RANGE, a następnie możemy użyć metody OFFSET.
Składnia OFFSET w VBA Excel

- Przesunięcie wierszy: ile wierszy chcesz odsunąć od wybranej komórki. Tutaj wybrana komórka to A1, tj. Zakres („A1”).
- Przesunięcie kolumn: ile kolumn chcesz odsunąć od wybranej komórki. Tutaj wybrana komórka to A, 1, czyli Zakres („A1”).
Przykłady
Przykład 1
Rozważ poniższe dane, na przykład demonstrację.

Teraz chcę wybrać komórkę A6 z komórki A1. Uruchom makro i komórkę odniesienia przy użyciu obiektu Range.
Kod:
Sub Offset_Example1 () Range ("A1"). Offset (End Sub

Teraz chcę zaznaczyć komórkę A6, tj. Chcę zlikwidować 5 komórek. Więc wprowadź 5 jako parametr dla Przesunięcia wiersza.
Kod:
Sub Offset_Example1 () Range ("A1"). Offset (5 End Sub

Ponieważ wybieram w tej samej kolumnie, pomijam część kolumnową. Zamknij nawias, umieść kropkę (.) I wpisz metodę „Wybierz”.
Kod:
Sub Offset_Example1 () Range ("A1"). Offset (5). Wybierz End Sub

Teraz uruchom ten kod za pomocą klawisza F5 lub możesz uruchomić ręcznie, aby wybrać komórkę A6, jak pokazano poniżej.

Wynik:

Przykład nr 2
Teraz weź te same dane, ale tutaj zobaczysz, jak używać argumentu przesunięcia kolumny. Teraz chcę zaznaczyć komórkę C5.
Ponieważ chcę najpierw wybrać komórkę C5, chcę przesunąć się o 4 komórki w dół i wybrać 2 prawe kolumny, aby dotrzeć do komórki C5. Poniższy kod załatwi sprawę za mnie.
Kod:
Sub Offset_Example2 () Range („A1”). Offset (4, 2). Select End Sub

Uruchamiam ten kod ręcznie lub za pomocą klawisza F5. Następnie wybierze komórkę C5, jak pokazano na poniższym zrzucie ekranu.

Wynik:

Przykład nr 3
Widzieliśmy, jak przesuwać wiersze i kolumny. Możemy również wybrać powyższe komórki z określonych komórek. Na przykład, jeśli jesteś w komórce A10 i chcesz wybrać komórkę A1, w jaki sposób wybierasz?
W przypadku przesuwania się w dół komórki możemy wpisać liczbę dodatnią, więc tutaj w przypadku przejścia w górę musimy wpisać liczby ujemne.
Z komórki A9 musimy przejść w górę o 8 rzędów, czyli -8.
Kod:
Sub Offset_Example1 () Range ("A9"). Offset (-8). Select End Sub

Jeśli uruchomisz ten kod za pomocą klawisza F5 lub możesz uruchomić ten kod ręcznie, wybierze komórkę A1 z komórki A9.

Wynik:

Przykład 4
Załóżmy, że jesteś w celi C8. Z tej komórki chcesz wybrać komórkę A10.
Z aktywnej komórki, l, czyli komórki C8, musimy najpierw przejść o 2 rzędy w dół i musimy przejść w lewo o 2 kolumny, aby wybrać komórkę A10.
W przypadku przesuwania się w lewo, aby wybrać kolumnę, musimy podać liczbę ujemną. Więc tutaj musimy cofnąć się o -2 kolumny.
Kod:
Sub Offset_Example2 () Range ("C8"). Offset (2, -2). Select End Sub

Teraz uruchom ten kod za pomocą klawisza F5 lub uruchom ręcznie, wybierze komórkę A10, jak pokazano poniżej:

Wynik:

Rzeczy do zapamiętania
- W przypadku przesunięcia wierszy w górę, musimy podać liczbę w negatywie.
- W przypadku przesuwania się w lewo, aby wybrać kolumnę, liczba powinna być ujemna.
- Komórka A1 to pierwszy wiersz i pierwsza kolumna.
- Aktywna komórka oznacza aktualnie wybrane komórki.
- Jeśli chcesz zaznaczyć komórkę za pomocą OFFSET, musisz wspomnieć o „.Select”.
- Jeśli chcesz skopiować komórkę za pomocą OFFSET, musisz wspomnieć o „.Copy”.