Offset – odwołanie do przesuniętego zakresu

Offset? A co to w ogóle jest?

Właściwość Offset pozwala na odwołanie się do obiektu Range przesuniętego o wskazaną liczbę wierszy i kolumn od innego obiektu Range. Jeśli myślisz, że zabrzmiało to przesadnie skomplikowanie to masz rację. Najczęściej offset służy do tego, żeby wskazać komórkę przesuniętą względem innej komórki.

Wykorzystując rejestrator makr z wybranymi odwołaniami względnymi napotkasz na swojej drodze Offset, który wskazuje o ile wierszy i kolumn przesunięta jest nowo zaznaczona komórka od obiektu Selection, lub ActiveCell.

rejestrowanie makra z odwołaniami względnymi wstawia w kodzie offset
widok arkusza

Oczywiście wykorzystując VBA wcale nie musimy wykonywać wszystkich tych operacji, które wykonujemy w Excelu, więc kod ten mógłby wyglądać w taki sposób.

skrócony kod z wykorzystaniem offset

Jednak Offset nie służy tylko do zaznaczania komórek. Właściwość ta pozwala na odwoływanie się do obiektów i ich modyfikację. Można też pobierać z nich jakieś parametry i dalej wykorzystywać.

pobieranie danych za pomocą offset i wykonanie dzialania
widok arkusza

Argumenty właściwości Offset

Właściwość Offset przyjmuje dwa parametry tj. liczbę przesunięcia na wierszach i na kolumnach. Kolejność w tym wypadku jest bardzo istotna i pierwsze są wiersze. Wartości dodatnie powodują przesunięcie w dół, a ujemne do góry. W przypadku kolumn dodatnie są w prawo, a ujemne w lewo.

Próba przejścia do komórki poza zakresem wywoła oczywiście błąd.

błąd przy wykorzystaniu offset

Liczba 0 powoduje brak przesunięcia, ale dopuszczalne jest też nie wpisanie niczego. Dla braku przesunięcia na wierszach konieczne jest wstawienie „,” przed wartością przesunięcia na kolumnach. Jeśli przesuwam się tylko na wierszach to nie muszę niczego więcej wpisywać, oprócz tej wartości przesunięcia.

offset z tylko jednym argumentem
widok arkusza
offset z tylko jednym argumentem
widok arkusza

Makro z użyciem Offset

Zróbmy razem przykład, w którym wykorzystam metodę przechodzenia po kolejnych komórkach w kolumnie. Nie jest to metoda najbardziej optymalna, ale część osób ją wykorzystuje, a ja chcę Ci po prostu pokazać jak działa Offset. W dwóch kolumnach wstawiłem dwie losowe wartości pomiarów. Kolumna ostatnia będzie przyjmowała informację, który pomiar był wyższy.

tabela danych

Wykorzystam pętlę Do Loop, która zatrzyma się dopiero, gdy trafi na pustą komórkę. Przed uruchomieniem pętli deklaruję sobie dwie zmienne, które przechwycą wartości z kolumn. Wprowadzam też polecenie zaznaczające komórkę A2 przed startem pętli.

deklaracja zmiennych i pętla

W ramach pętli makro sprawdzi jaka jest wartość w kolumnie „B” i porówna ją z wartością w kolumnie „C”. Nagłówek kolumny, która zawierać będzie wyższą wartość zostanie wpisany do kolumny „D”. Jeśli wartości będą równe, to pojawi się słowo „remis”.

instrukcja warunkowa if
wynik dzialania makra

Jak widzisz Offset jest prosty w obsłudze i może być przydatny w tworzonych przez Ciebie makrach.

Spodobał Ci się artykuł ? Udostępnij go znajomym.

Share on facebook
Share on linkedin
Share on twitter

Leave a Comment

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *