Declararea unui interval în raport cu celula activă cu VBA (Programare, Vba, Excel)

BlueBerry a intrebat.

Trebuie să declar un obiect de interval relativ la celula activă. Problema este că numărul de rânduri și coloane pe care vreau să le selectez este diferit de fiecare dată când se execută macroul.

De exemplu, am două variabile: numRows și numCols.

Vreau să selectez un interval care are ActiveCell în mâna din colțul din stânga sus are celula cu rândul ActiveCell.Row + NumRows și coloana ActiveCell.Column + NumCols în dreapta jos (și apoi intenționez să copiez aceste date într-un array pentru a accelera macroul meu).

Aveți vreo sugestie despre cum să fac acest lucru?

2 răspunsuri
user2140173

Există un .Offset proprietate pe o clasă Range care vă permite să faceți exact ceea ce aveți nevoie

ActiveCell.Offset(numRows, numCols)

să urmăriți un comentariu:

Dim newRange as Range
Set newRange = Range(ActiveCell, ActiveCell.Offset(numRows, numCols))

și puteți verifica prin MsgBox newRange.Address

și iată cum să atribuiți acest interval unui array

Jean-François Corbett

Așa:

Dim rng as Range
Set rng = ActiveCell.Resize(numRows, numCols)

apoi citiți conținutul acestui interval într-un array:

Dim arr As Variant
arr = rng.Value
'arr is now a two-dimensional array of size (numRows, numCols)

sau, selectați intervalul (nu cred că este ceea ce doriți cu adevărat, dar cereți acest lucru în întrebare).

rng.Select

Comentarii

  • ++ Îmi place alternativa și cred că este o modalitate mai bună de a obține ceea ce solicită OP în acest scenariu. – user2140173

Tags:,