Ten samouczek pokaże, jak używać Activecell Offset w VBA.
ActiveCell to właściwość VBA, która reprezentuje adres komórki aktywnej komórki w arkuszu. Jeśli wskaźnik myszy znajduje się w komórce A1, właściwość ActiveCell w VBA zwróci adres komórki „A1”. Istnieje szereg właściwości i metod, które są połączone z ActiveCell. W tym artykule koncentrujemy się na metodzie ActiveCell.Offset.
Właściwości i metody ActiveCell.Offset
Activecell.Offset ma wiele właściwości i metod, które można zaprogramować za pomocą VBA. Aby wyświetlić dostępne właściwości i metody, wpisz następującą instrukcję w poniższej procedurze i naciśnij klawisz kropki na klawiaturze, aby wyświetlić listę rozwijaną.
Metody są oznaczone zieloną ikoną metody, a właściwości małą ikoną rączki. Właściwości i metody metody Activecell.Offset są takie same jak w przypadku metody Activecell.
Składnia ActiveCell.Offset
Składnia Activecell.Offset jest następująca
gdzie RowOffset i ColumnOffset to liczba wierszy do przesunięcia (liczby dodatnie dla dołu, liczba ujemna dla góry) lub liczba kolumn, które chcesz przesunąć (liczby dodatnie są przesuwane w prawo, liczba ujemna w lewo).
Przesunięcie.aktywnej komórki… Wybierz
ten Przesunięcie.Aktywnejkomórki… Wybierz Metoda jest najczęściej stosowaną metodą dla metody Activecell.Offset. Pozwala przejść do innej komórki w arkuszu. Możesz użyć tej metody do poruszania się między kolumnami lub wierszami w górę lub w dół w arkuszu.
Aby przejść w dół o rząd, ale pozostać w tej samej kolumnie:
1 | Activecell.Offset(1,0).Select |
Aby poruszać się po kolumnie, ale pozostać w tym samym rzędzie:
1 | Aktywnakomórka.Przesunięcie (0,1).Wybierz |
Aby przejść w dół o wiersz i w poprzek kolumny:
1 | Activecell.Offset (1,1).Wybierz |
Aby przejść o rząd wyżej:
1 | Aktywnakomórka.Przesunięcie(-1,0).Wybierz |
Aby przejść w lewo o kolumnę:
1 | Activecell.Offset(0,-1).Wybierz |
W poniższej procedurze przechodzimy przez zakres komórek i przesuwamy się w dół o jeden wiersz i przez jedną kolumnę, wykonując pętlę:
12345678 | Test podrzędnej komórki aktywnej()Dim x As IntegerZakres ("A1"). WybierzDla x = 1 do 10AktywnaKomórka = xPrzesunięcie aktywnej komórki (1, 1). WybierzNastępny xNapis końcowy |
Wynik czego pokazano na poniższej grafice:
Pętla umieszcza wartość i (1-10) w Aktywna komórka, a następnie używa Activecell.Offset aby przejść o jeden wiersz w dół i przez jedną kolumnę w prawo - powtarzając tę pętlę 10 razy.
Programowanie VBA | Generator kodu działa dla Ciebie!
Korzystanie z obiektu zakresu z Activecell.Offset Select
Używanie obiektu zakresu z aktywną komórką może czasami zmylić niektórych ludzi.
Rozważ następującą procedurę:
1234 | Sub ActiveCellOffsetRange()Zakres ("B1: B10").WybierzActiveCell.Offset(1, 1).Range("A1").WybierzNapis końcowy |
W przypadku ActiveCell.Offset(1,1.Range(„A1”) określono Zakres(„A1”). Nie oznacza to jednak, że zostanie wybrana komórka A1 w arkuszu. Ponieważ określiliśmy Zakres („B1:B10”), komórka A1 w tym zakresie jest w rzeczywistości komórką B1 w skoroszycie. Dlatego komórka zostanie przesunięta o 1 wiersz i 1 kolumnę od komórka B1 NIE z komórki A1.
Dlatego zakres („A1′”) w tym przypadku nie jest wymagany, ponieważ makro będzie działać w ten sam sposób z nim lub bez niego.
Alternatywy dla ActiveCell
Zamiast używać Activecell z metodą Offset, możemy również użyć obiektu Range z metodą Offset.
123 | Przesunięcie podzakresu()Zakres("B1").Przesunięcie(0, 1).WybierzNapis końcowy |
Powyższa procedura spowoduje zaznaczenie komórki C1 w arkuszu.