Refer to a cell or group of cells

This page handles how to refer to ranges on a worksheet. Next to refer directly you can Refer with ActiveCell or use Offset or Resize.

Specify the range directly.

A common task when using VBA is to specify a cell (or range of cells) and then do something with it, such as enter a formula or change its value.You can usually do this in one statement that identifies the range and also changes a property or applies a method.

Here's an example that assigns the value 10 to range A1:C12 on Sheet1 in a workbook named MyBook:

Workbooks("MyBook").Sheets("Sheet1").Range("A1:C12").Value = 10

This statement can be simplified as:

 Range("A1:C12").Value = 10

To select a cell in Excel, you have two basic methods: Range and Cells:

Range ("A1").Select     'Here the cell is referred by its name


Range works well for hard-coded cells.

Cells(2, 4).Select     'Selects Row 2, Column 4, i.e. cell D2.

Cells works best with calculated cells, especially when you couple it with a loop:

For i = 1 To 10
    Cells(i, 1).Value = i   ' fill A1 through A10 with the value of i
Next i

Referring with ActiveCells

 It is also possible to use ActiveCell for referring. ActiveCell  is the cell which is highligted in the Excel sheet.

Range(ActiveCell, "E5").Select     'This selects a block from whereever the Active Cell to E5


The Offset property is used with the Range property. You specify a new location, based on one or more cells you also specify.

Range("A1").Offset(RowOffSet:=1, ColumnOffset:=1).Select   ' move from cell A1 one row and one column, so you get B2 .

Selecting on the left goes by negative numbers

Range("B2").Offset(-1, -1 ).Select

You can leave out one of the arguments

Range("A1").Offset(, 1 ).Select    ' means Select B1, mind the comma

Range("A1").Offset(1 ).Select    ' means Select A2,

Example: Calculating the sum of values in a Range finds only 1 value.

Set Rng = Range("B1:B16").Find(What:="0", LookAt:=xlWhole, LookIn:=xlValues) Rng.Offset(, 1).Value = "LOW"

You can loop through a list more efficiently with Offset. It is easier to program and faster to execute.


The Resize property enables you to change the size of a range based on a chosen starting position. You can create a new range as you need it.

Range.Resize(RowSize, ColumnSize)

To create a range B3:D12, use this:

Range("B3").Resize(RowSize:=10, ColumnSize:=3) or, simpler: Range("B3").Resize(10, 3).Select