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.
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.
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ć.
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.
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.
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.
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.
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”.
Jak widzisz Offset jest prosty w obsłudze i może być przydatny w tworzonych przez Ciebie makrach.