How to Select Cells and Ranges in Excel Visual Basic

This minHour teaches you how to start using Visual Basic procedures to select data in Microsoft Excel. As long as you're familiar with basic VB scripting and using more advanced features of Excel, you'll find the selection process pretty straight-forward.

Selecting Individual Cells

Select one cell on the current worksheet.

Let’s say you want to select cell E6 with Visual Basic. You can do this with either of the following options:ActiveSheet.Cells(6, 5).SelectActiveSheet.Range(“E6”).Select

Select one cell on a different worksheet in the same workbook.

Let’s say our example cell, E6, is on a sheet called Sheet2. You can use either of the following options to select it:Application.Goto ActiveWorkbook.Sheets(“Sheet2”).Cells(6, 5)Application.Goto (ActiveWorkbook.Sheets(“Sheet2”).Range(“E6”))

Select one cell on a worksheet in a different workbook.

Let’s say you want to select a cell from Sheet1 in a workbook called BOOK2.XLS. Either of these two options should do the trick:Application.Goto Workbooks(“BOOK2.XLS”).Sheets(“Sheet1”).Cells(2,1)Application.Goto Workbooks(“BOOK2.XLS”).Sheets(“Sheet1”).Range(“A2”)

Select a cell relative to another cell.

You can use VB to select a cell based on its location relative to the active (or a different) cell. Just be sure the cell exists to avoid errors. Here’s how to use :

  • Select the cell three rows below and four columns to the left of the active cell:ActiveCell.Offset(3, -4).Select
  • Select the cell five rows below and four columns to the right of cell C7:ActiveSheet.Cells(7, 3).Offset(5, 4).Select

Selecting Ranges

Select a range of cells on the active worksheet.

If you wanted to select cells C1:D6 on the current sheet, you can enter any of the following three examples:ActiveSheet.Range(Cells(1, 3), Cells(6, 4)).SelectActiveSheet.Range(“C1:D6”).SelectActiveSheet.Range(“C1”, “D6”).Select

Select a range from another worksheet in the same workbook.

You could use either of these examples to select cells C3:E11 on a sheet called Sheet3:Application.Goto ActiveWorkbook.Sheets(“Sheet3”).Range(“C3:E11”)Application.Goto ActiveWorkbook.Sheets(“Sheet3”).Range(“C3”, “E11”)

Select a range of cells from a worksheet in a different workbook.

Both of these examples would select cells E12:F12 on Sheet1 of a workbook called BOOK2.XLS: Application.Goto Workbooks(“BOOK2.XLS”).Sheets(“Sheet1”).Range(“E12:F12”)Application.Goto Workbooks(“BOOK2.XLS”).Sheets(“Sheet1”).Range(“E12”, “F12”)

Select a named range.

If you’ve assigned a name to a range of cells, you’d use the same syntax as steps 4-6, but you’d replace the range address (e.g., “E12”, “F12”) with the range’s name (e.g., “Sales”). Here are some examples:

  • On the active sheet:ActiveSheet.Range(“Sales”).Select
  • Different sheet of same workbook:Application.Goto ActiveWorkbook.Sheets(“Sheet3”).Range(“Sales”)
  • Different workbook:Application.Goto Workbooks(“BOOK2.XLS”).Sheets(“Sheet1”).Range(“Sales”)

Select a range relative to a named range.

The syntax varies depending on the named range’s location and whether you want to adjust the size of the new range.

  • If the range you want to select is the same size as one called Test5 but is shifted four rows down and three columns to the right, you’d use: ActiveSheet.Range(“Test5”).Offset(4, 3).Select
  • If the range is on Sheet3 of the same workbook, activate that worksheet first, and then select the range like this:Sheets(“Sheet3”).Activate ActiveSheet.Range(“Test”).Offset(4, 3).Select

Select a range and resize the selection.

You can increase the size of a selected range if you need to. If you wanted to select a range called Database’ and then increase its size by 5 rows, you’d use this syntax:Range(“Database”).Select Selection.Resize(Selection.Rows.Count + 5, _Selection.Columns.Count).Select

Select the union of two named ranges.

If you have two overlapping named ranges, you can use VB to select the cells in that overlapping area (called the “union”). The limitation is that you can only do this on the active sheet. Let’s say you want to select the union of a range called Great and one called Terrible:

  • Application.Union(Range(“Great”), Range(“Terrible”)).Select
  • If you want to select the intersection of two named ranges instead of the overlapping area, just replace Application.Union with Application.Intersect.

Selecting from Contiguous and Non-Contiguous Data in Columns

Use this example data for the examples in this method.

This chart full of example data, courtesy of Microsoft, will help you visualize how the examples behave:A1: NameB1: SalesC1: QuantityA2: aB2: $10C2: 5A3: bB3:C3: 10A4: cB4: $10C4: 5A5:B5:C5:A6: TotalB6: $20C6: 20

Select the last cell at the bottom of a contiguous column.

The following example will select cell A4:ActiveSheet.Range(“A1”).End(xlDown).Select

Select the first blank cell below a column of contiguous cells.

The following example will select A5 based on the chart above:ActiveSheet.Range(“A1”).End(xlDown).Offset(1,0).Select

Select a range of continuous cells in a column.

Both of the following examples will select the range A1:A4:ActiveSheet.Range(“A1”, ActiveSheet.Range(“a1”).End(xlDown)).SelectActiveSheet.Range(“A1:” & ActiveSheet.Range(“A1”). End(xlDown).Address).Select

Select a whole range of non-contiguous cells in a column.

Using the data table at the top of this method, both of the following examples will select A1:A6: ActiveSheet.Range(“A1”,ActiveSheet.Range(“A65536”).End(xlUp)).SelectActiveSheet.Range(“A1”,ActiveSheet.Range(“A65536”).End(xlUp)).Select


  • The “ActiveSheet” and “ActiveWorkbook” properties can usually be omitted if the active sheet and/or workbook(s) are implied.

Leave a Comment