Acest tutorial va arăta cum să utilizați Activecell Offset în VBA.
ActiveCell este o proprietate a VBA care reprezintă adresa celulei celulei active din foaia dvs. de lucru. Dacă indicatorul mouse-ului este poziționat în celula A1, atunci proprietatea ActiveCell din VBA va returna adresa celulei „A1”. Sunt o serie de proprietăți și metode care sunt conectate la ActiveCell. În acest articol ne concentrăm asupra metodei ActiveCell.Offset.
Proprietăți și metode ActiveCell.Offset
Activecell.Offset are o serie de proprietăți și metode disponibile pentru a fi programate cu VBA. Pentru a vizualiza proprietățile și metodele disponibile, tastați următoarea declarație într-o procedură așa cum se arată mai jos și apăsați tasta punct pe tastatură pentru a vedea o listă derulantă.
Metodele sunt descrise de pictograma metodă verde, iar proprietățile de pictograma mână mică. Proprietățile și metodele pentru metoda Activecell.Offset sunt aceleași ca și pentru metoda Activecell.
ActiveCell.Offset Syntax
Sintaxa Activecell.Offset este următoarea
unde RowOffset și ColumnOffset este numărul de rânduri de compensat (numere pozitive pentru jos, număr negativ pentru sus) sau numărul de coloane pe care doriți să le compensați (numere pozitive se deplasează la dreapta, număr negativ la stânga).
ActiveCell.Offset … Selectați
The Activecell.Offset … Selectați metoda este cea mai frecvent utilizată metodă cu Metoda Activecell.Offset. Vă permite să vă mutați într-o altă celulă din foaia de lucru. Puteți utiliza această metodă pentru a vă deplasa între coloane sau rânduri în sus sau în jos în foaia de lucru.
Pentru a vă deplasa în jos, dar rămâneți în aceeași coloană:
1 | Activecell.Offset (1,0). Selectați |
Pentru a vă deplasa pe o coloană, dar rămâneți în același rând:
1 | Activecell.Offset (0,1). Selectați |
Pentru a vă deplasa în jos pe un rând și pe o coloană:
1 | Activecell.Offset (1,1). Selectați |
Pentru a vă deplasa în sus:
1 | Activecell.Offset (-1,0). Selectați |
Pentru a muta o coloană la stânga:
1 | Activecell.Offset (0, -1). Selectați |
În procedura de mai jos, parcurgem o buclă printr-o gamă de celule și ne deplasăm în jos pe un rând și pe o coloană în timp ce facem bucla:
12345678 | Sub ActiveCellTest ()Dim x Ca întregRange ("A1"). SelectațiPentru x = 1 până la 10ActiveCell = xActiveCell.Offset (1, 1). SelectațiUrmătorul xSfârșitul Sub |
Rezultatul căruia este prezentat în graficul de mai jos:
Bucla plasează valoarea lui i (1-10) în Activecell, și apoi folosește Activecell.Offset proprietate pentru a vă deplasa în jos cu un rând și într-o coloană spre dreapta - repetând această buclă de 10 ori.
Programare VBA | Generatorul de coduri funcționează pentru dvs.!
Utilizarea Range Object cu Activecell.Offset Select
Utilizarea Range Object cu celula activă poate confunda uneori unele persoane.
Luați în considerare următoarea procedură:
1234 | Sub ActiveCellOffsetRange ()Gama ("B1: B10"). SelectațiActiveCell.Offset (1, 1) .Gama ("A1"). SelectațiSfârșitul Sub |
Cu ActiveCell.Offset (1,1.Range („A1”), Range („A1”) a fost specificat. Cu toate acestea, acest lucru nu înseamnă că celula A1 din foaie va fi selectată. După cum am specificat Range („B1: B10”), celula A1 din acest interval este de fapt celula B1 din registrul de lucru. Prin urmare, celula va fi compensată cu 1 rând și 1 coloană din celula B1 NU din celula A1.
Prin urmare, Range („A1 ′) în această instanță nu este necesar, deoarece macro-ul va funcționa în același mod cu el sau fără el.
Alternative la ActiveCell
În loc să folosim Activecell cu metoda Offset, putem folosi și obiectul Range cu metoda Offset.
123 | Sub RangeOffset ()Gama ("B1"). Offset (0, 1). SelectațiSfârșitul Sub |
Procedura de mai sus ar selecta celula C1 din foaia de lucru.