piątek, 3 lipca 2015

Względna pozycja komórki wewnątrz zakresu Range

W jaki sposób odnaleźć w najprostszy sposób informację o numerze wiersza i kolumny dla określonej komórki lecz nie w relacji do arkusza, a w relacji do innego wskazanego zakresu? Zaprezentuję Państwu dwa przykładowe rozwiązania dla tak postawionego zadania. Zagadnienie to pojawiło się ostatnio na forum programistycznym i myślę, że warto przypomnieć szczególnie drugą technikę pracy z zakresami.

Wspólne założenia do projektu prezentuje poniższy startowy kod wraz z komentarzami:
1Dim Zakres As Range
2Dim Komorka As Range
3'przykładowy zakres
4Set Zakres = Range("E5:J20")
5Set Komorka = Range("G10")
6'wartości oczekiwane: wiersz = 6, kolumna = 3
7 
8'warto upewnić się, że Komorka jest wewnątrz Zakres
9If Intersect(Komorka, Zakres) Is Nothing Then Exit Sub


Wariant 1. Najprostszy, w którym wykorzystamy różnicę pomiędzy numerami wierszy zakresu odniesienia i wskazanej komórki:
1Debug.Print Komorka.Row - Zakres.Row + 1
2Debug.Print Komorka.Column - Zakres.Column + 1


Wariant 2. W którym tworzymy tymczasowy zakres od początku zakresu odniesienia do wskazanej komórki i wyliczamy odpowiednio ilość kolumn i wierszy zakresu tymczasowego:
1Debug.Print Range(Zakres.Cells(1), Komorka).Rows.Count
2Debug.Print Range(Zakres(1), Komorka).Columns.Count
3'zapis Zakres.Cells(1) i Zakres(1) są tożsame

Brak komentarzy:

Prześlij komentarz