Excel vba select all cells range

Home / VBA / How to SELECT ALL the Cells in a Worksheet using a VBA Code

In VBA, there is a property called CELLS that you can use to select all the cells that you have in a worksheet.

Cells.Select
  1. First, type the CELLS property to refer to all the cells in the worksheet.
    1-type-the-cells-property
  2. After that, enter a (.) dot.
  3. At this point, you’ll have a list of methods and properties.
    2-enter-a-dot
  4. From that list select “Select” or type “Select”.
    3-from-list-select-select-or-type-select

Once you select the entire worksheet you can change the font, clear contents from it, or do other things.

Notes

  • The CELLS property works just like the way you use the keyboard shortcut Control + A to select all the cells.
  • When you run this VBA code, it will select all the cells even if the sheet is protected and some of the cells are locked.
  • It will select cells that are hidden as well.

The sheet Must Be Activated

Now you need to understand one thing here when you select all the cells from a sheet that sheet needs to be activated. In short, you can’t select cells from a sheet that is not activated.

Let’s say you want to select all the cells from “Sheet1”. If you use the type below code, you’ll get an error. You need to activate the “Sheet1” first and then use the “Cells” property to select all the cells.

Worksheets("Sheet1").Activate
Cells.Select

Now when you run this it will first activate the “Sheet1” and then select all the cells. This thing gives you a little limitation that you can’t select the entire sheet if that sheet is not activated.

Here’s another thing that you can do: You can add a new sheet and then select all the cells.

Sheets.Add.Name = "mySheet"
Cells.Select

More Tutorials

    • Count Rows using VBA in Excel
    • Excel VBA Font (Color, Size, Type, and Bold)
    • Excel VBA Hide and Unhide a Column or a Row
    • Excel VBA Range – Working with Range and Cells in VBA
    • Apply Borders on a Cell using VBA in Excel
    • Find Last Row, Column, and Cell using VBA in Excel
    • Insert a Row using VBA in Excel
    • Merge Cells in Excel using a VBA Code
    • Select a Range/Cell using VBA in Excel
    • ActiveCell in VBA in Excel
    • Special Cells Method in VBA in Excel
    • UsedRange Property in VBA in Excel
    • VBA AutoFit (Rows, Column, or the Entire Worksheet)
    • VBA ClearContents (from a Cell, Range, or Entire Worksheet)
    • VBA Copy Range to Another Sheet + Workbook
    • VBA Enter Value in a Cell (Set, Get and Change)
    • VBA Insert Column (Single and Multiple)
    • VBA Named Range | (Static + from Selection + Dynamic)
    • VBA Range Offset
    • VBA Sort Range | (Descending, Multiple Columns, Sort Orientation
    • VBA Wrap Text (Cell, Range, and Entire Worksheet)
    • VBA Check IF a Cell is Empty + Multiple Cells

    ⇠ Back to What is VBA in Excel

    Helpful Links – Developer Tab – Visual Basic Editor – Run a Macro – Personal Macro Workbook – Excel Macro Recorder – VBA Interview Questions – VBA Codes

    In this Article

    • Select a Single Cell Using VBA
    • Select a Range of Cells Using VBA
    • Select a Range of Non-Contiguous Cells Using VBA
    • Select All the Cells in a Worksheet
    • Select a Row
    • Select a Column
    • Select the Last Non-Blank Cell in a Column
    • Select the Last Non-Blank Cell in a Row
    • Select the Current Region in VBA
    • Select a Cell That is Relative To Another Cell
    • Select a Named Range in Excel
    • Selecting a Cell on Another Worksheet
    • Manipulating the Selection Object in VBA
    • Using the With…End With Construct

    VBA allows you to select a cell, ranges of cells, or all the cells in the worksheet. You can manipulate the selected cell or range using the Selection Object.

    Select a Single Cell Using VBA

    You can select a cell in a worksheet using the Select method. The following code will select cell A2 in the ActiveWorksheet:

    Range("A2").Select

    Or

    Cells(2, 1).Select

    The result is:

    Selecting a Single Cell in VBA

    Select a Range of Cells Using VBA

    You can select a group of cells in a worksheet using the Select method and the Range object. The following code will select A1:C5:

    Range("A1:C5").Select

    Select a Range of Non-Contiguous Cells Using VBA

    You can select cells or ranges that are not next to each other, by separating the cells or ranges using a comma in VBA. The following code will allow you to select cells A1, C1, and E1:

    Range("A1, C1, E1").Select

    You can also select sets of non-contiguous ranges in VBA. The following code will select A1:A9 and B11:B18:

    Range("A1:A9, B11:B18").Select

    Select All the Cells in a Worksheet

    You can select all the cells in a worksheet using VBA. The following code will select all the cells in a worksheet.

    Cells.Select

    Select a Row

    You can select a certain row in a worksheet using the Row object and the index number of the row you want to select. The following code will select the first row in your worksheet:

    Rows(1).Select

    Select a Column

    You can select a certain column in a worksheet using the Column object and the index number of the column you want to select. The following code will select column C in your worksheet:

    Columns(3).Select

    VBA Coding Made Easy

    Stop searching for VBA code online. Learn more about AutoMacro — A VBA Code Builder that allows beginners to code procedures from scratch with minimal coding knowledge and with many time-saving features for all users!

    automacro

    Learn More

    Select the Last Non-Blank Cell in a Column

    Let’s say you have data in cells A1, A2, A3 and A4 and you would like to select the last non-blank cell which would be cell A4 in the column. You can use VBA to do this and the Range.End method.

    The Range.End Method can take four arguments namely: xlToLeft, xlToRight, xlUp and xlDown.

    The following code will select the last non-blank cell which would be A4 in this case, if A1 is the active cell:

    Range("A1").End(xlDown).Select

    Select the Last Non-Blank Cell in a Row

    Let’s say you have data in cells A1, B1, C1, D1, and E1 and you would like to select the last non-blank cell which would be cell E1 in the row. You can use VBA to do this and the Range.End method.

    The following code will select the last non-blank cell which would be E1 in this case, if A1 is the active cell:

    Range("A1").End(xlToRight).Select

    Select the Current Region in VBA

    You can use the CurrentRegion Property of the Range Object in order to select a rectangular range of blank and non-blank cells around a specific given input cell. If you have data in cell A1, B1 and C1, the following code would select this region around cell A1:

    Range("A1").CurrentRegion.Select

    So the range A1:C1 would be selected.

    VBA Programming | Code Generator does work for you!

    Select a Cell That is Relative To Another Cell

    You can use the Offset Property to select a cell that is relative to another cell. The following code shows you how to select cell B2 which is 1 row and 1 column relative to cell A1:

    Range("A1").Offset(1, 1).Select

    Select a Named Range in Excel

    You can select Named Ranges as well. Let’s say you have named cells A1:A4 Fruit. You can use the following code to select this named range:

    Range("Fruit").Select

    Selecting a Cell on Another Worksheet

    In order to select a cell on another worksheet, you first need to activate the sheet using the Worksheets.Activate method. The following code will allow you to select cell A7, on the sheet named Sheet5:

    Worksheets("Sheet5").Activate
    Range("A1").Select

    Manipulating the Selection Object in VBA

    Once you have selected a cell or range of cells, you can refer to the Selection Object in order to manipulate these cells. The following code selects the cells A1:C1 and sets the font of these cells to Arial, the font weight to bold, the font style to italics and the fill color to green.

    Sub FormatSelection()
    Range("A1:C1").Select
    
    Selection.Font.Name = "Arial"
    Selection.Font.Bold = True
    Selection.Font.Italic = True
    Selection.Interior.Color = vbGreen
    
    End Sub

    The result is:

    Using the Selection Object

    Using the With…End With Construct

    We can repeat the above example using the With / End With Statement to refer to the Selection Object only once. This saves typing and usually makes your code easier to read.

    Sub UsingWithEndWithSelection()
    Range("A1:C1").Select
    
    With Selection
    .Font.Name = "Arial"
    .Font.Bold = True
    .Font.Italic = True
    .Interior.Color = vbGreen
    End With
    
    End Sub

    When working with Excel, most of your time is spent in the worksheet area – dealing with cells and ranges.

    And if you want to automate your work in Excel using VBA, you need to know how to work with cells and ranges using VBA.

    There are a lot of different things you can do with ranges in VBA (such as select, copy, move, edit, etc.).

    So to cover this topic, I will break this tutorial into sections and show you how to work with cells and ranges in Excel VBA using examples.

    Let’s get started.

    All the codes I mention in this tutorial need to be placed in the VB Editor. Go to the ‘Where to Put the VBA Code‘ section to know how it works.

    If you’re interested in learning VBA the easy way, check out my Online Excel VBA Training.

    Selecting a Cell / Range in Excel using VBA

    To work with cells and ranges in Excel using VBA, you don’t need to select it.

    In most of the cases, you are better off not selecting cells or ranges (as we will see).

    Despite that, it’s important you go through this section and understand how it works. This will be crucial in your VBA learning and a lot of concepts covered here will be used throughout this tutorial.

    So let’s start with a very simple example.

    Selecting a Single Cell Using VBA

    If you want to select a single cell in the active sheet (say A1), then you can use the below code:

    Sub SelectCell()
    Range("A1").Select
    End Sub

    The above code has the mandatory ‘Sub’ and ‘End Sub’ part, and a line of code that selects cell A1.

    Range(“A1”) tells VBA the address of the cell that we want to refer to.

    Select is a method of the Range object and selects the cells/range specified in the Range object. The cell references need to be enclosed in double quotes.

    This code would show an error in case a chart sheet is an active sheet. A chart sheet contains charts and is not widely used. Since it doesn’t have cells/ranges in it, the above code can’t select it and would end up showing an error.

    Note that since you want to select the cell in the active sheet, you just need to specify the cell address.

    But if you want to select the cell in another sheet (let’s say Sheet2), you need to first activate Sheet2 and then select the cell in it.

    Sub SelectCell()
    Worksheets("Sheet2").Activate
    Range("A1").Select
    End Sub

    Similarly, you can also activate a workbook, then activate a specific worksheet in it, and then select a cell.

    Sub SelectCell()
    Workbooks("Book2.xlsx").Worksheets("Sheet2").Activate
    Range("A1").Select
    End Sub
    

    Note that when you refer to workbooks, you need to use the full name along with the file extension (.xlsx in the above code). In case the workbook has never been saved, you don’t need to use the file extension.

    Now, these examples are not very useful, but you will see later in this tutorial how we can use the same concepts to copy and paste cells in Excel (using VBA).

    Just as we select a cell, we can also select a range.

    In case of a range, it could be a fixed size range or a variable size range.

    In a fixed size range, you would know how big the range is and you can use the exact size in your VBA code. But with a variable-sized range, you have no idea how big the range is and you need to use a little bit of VBA magic.

    Let’s see how to do this.

    Selecting a Fix Sized Range

    Here is the code that will select the range A1:D20.

    Sub SelectRange()
    Range("A1:D20").Select
    End Sub
    

    Another way of doing this is using the below code:

    Sub SelectRange()
    Range("A1", "D20").Select
    End Sub

    The above code takes the top-left cell address (A1) and the bottom-right cell address (D20) and selects the entire range. This technique becomes useful when you’re working with variably sized ranges (as we will see when the End property is covered later in this tutorial).

    If you want the selection to happen in a different workbook or a different worksheet, then you need to tell VBA the exact names of these objects.

    For example, the below code would select the range A1:D20 in Sheet2 worksheet in the Book2 workbook.

    Sub SelectRange()
    Workbooks("Book2.xlsx").Worksheets("Sheet1").Activate
    Range("A1:D20").Select
    End Sub

    Now, what if you don’t know how many rows are there. What if you want to select all the cells that have a value in it.

    In these cases, you need to use the methods shown in the next section (on selecting variably sized range).

    Selecting a Variably Sized Range

    There are different ways you can select a range of cells. The method you choose would depend on how the data is structured.

    In this section, I will cover some useful techniques that are really useful when you work with ranges in VBA.  

    Select Using CurrentRange Property

    In cases where you don’t know how many rows/columns have the data, you can use the CurrentRange property of the Range object.

    The CurrentRange property covers all the contiguous filled cells in a data range.

    Below is the code that will select the current region that holds cell A1.

    Sub SelectCurrentRegion()
    Range("A1").CurrentRegion.Select
    End Sub

    The above method is good when you have all data as a table without any blank rows/columns in it.

    Cells and Ranges in VBA - currentregion property

    But in case you have blank rows/columns in your data, it will not select the ones after the blank rows/columns. In the image below, the CurrentRegion code selects data till row 10 as row 11 is blank.

    Cells and Ranges in VBA - currentregion property not selecting rows after blank

    In such cases, you may want to use the UsedRange property of the Worksheet Object.

    Select Using UsedRange Property

    UsedRange allows you to refer to any cells that have been changed.

    So the below code would select all the used cells in the active sheet.

    Sub SelectUsedRegion()
    ActiveSheet.UsedRange.Select
    End Sub

    Note that in case you have a far-off cell that has been used, it would be considered by the above code and all the cells till that used cell would be selected.

    Select Using the End Property

    Now, this part is really useful.

    The End property allows you to select the last filled cell. This allows you to mimic the effect of Control Down/Up arrow key or Control Right/Left keys.

    Let’s try and understand this using an example.

    Suppose you have a dataset as shown below and you want to quickly select the last filled cells in column A.

    The problem here is that data can change and you don’t know how many cells are filled. If you have to do this using keyboard, you can select cell A1, and then use Control + Down arrow key, and it will select the last filled cell in the column.

    Now let’s see how to do this using VBA. This technique comes in handy when you want to quickly jump to the last filled cell in a variably-sized column

    Sub GoToLastFilledCell()
    Range("A1").End(xlDown).Select
    End Sub

    The above code would jump to the last filled cell in column A.

    Similarly, you can use the End(xlToRight) to jump to the last filled cell in a row.

    Sub GoToLastFilledCell()
    Range("A1").End(xlToRight).Select
    End Sub

    Now, what if you want to select the entire column instead of jumping to the last filled cell.

    You can do that using the code below:

    Sub SelectFilledCells()
    Range("A1", Range("A1").End(xlDown)).Select
    End Sub

    In the above code, we have used the first and the last reference of the cell that we need to select. No matter how many filled cells are there, the above code will select all.

    Remember the example above where we selected the range A1:D20 by using the following line of code:

    Range(“A1″,”D20”)

    Here A1 was the top-left cell and D20 was the bottom-right cell in the range. We can use the same logic in selecting variably sized ranges. But since we don’t know the exact address of the bottom-right cell, we used the End property to get it.

    In Range(“A1”, Range(“A1”).End(xlDown)), “A1” refers to the first cell and Range(“A1”).End(xlDown) refers to the last cell. Since we have provided both the references, the Select method selects all the cells between these two references.

    Similarly, you can also select an entire data set that has multiple rows and columns.

    The below code would select all the filled rows/columns starting from cell A1.

    Sub SelectFilledCells()
    Range("A1", Range("A1").End(xlDown).End(xlToRight)).Select
    End Sub

    In the above code, we have used Range(“A1”).End(xlDown).End(xlToRight) to get the reference of the bottom-right filled cell of the dataset.

    Difference between Using CurrentRegion and End

    If you’re wondering why use the End property to select the filled range when we have the CurrentRegion property, let me tell you the difference.

    With End property, you can specify the start cell. For example, if you have your data in A1:D20, but the first row are headers, you can use the End property to select the data without the headers (using the code below).

    Sub SelectFilledCells()
    Range("A2", Range("A2").End(xlDown).End(xlToRight)).Select
    End Sub

    But the CurrentRegion would automatically select the entire dataset, including the headers.

    So far in this tutorial, we have seen how to refer to a range of cells using different ways.

    Now let’s see some ways where we can actually use these techniques to get some work done.

    Copy Cells / Ranges Using VBA

    As I mentioned at the beginning of this tutorial, selecting a cell is not necessary to perform actions on it. You will see in this section how to copy cells and ranges without even selecting these.

    Let’s start with a simple example.

    Copying Single Cell

    If you want to copy cell A1 and paste it into cell D1, the below code would do it.

    Sub CopyCell()
    Range("A1").Copy Range("D1")
    End Sub

    Note that the copy method of the range object copies the cell (just like Control +C) and pastes it in the specified destination.

    In the above example code, the destination is specified in the same line where you use the Copy method. If you want to make your code even more readable, you can use the below code:

    Sub CopyCell()
    Range("A1").Copy Destination:=Range("D1")
    End Sub

    The above codes will copy and paste the value as well as formatting/formulas in it.

    As you might have already noticed, the above code copies the cell without selecting it. No matter where you’re on the worksheet, the code will copy cell A1 and paste it on D1.

    Also, note that the above code would overwrite any existing code in cell D2. If you want Excel to let you know if there is already something in cell D1 without overwriting it, you can use the code below.

    Sub CopyCell()
    If Range("D1") <> "" Then
    Response = MsgBox("Do you want to overwrite the existing data", vbYesNo)
    End If
    If Response = vbYes Then
    Range("A1").Copy Range("D1")
    End If
    End Sub

    Copying a Fix Sized Range

    If you want to copy A1:D20 in J1:M20, you can use the below code:

    Sub CopyRange()
    Range("A1:D20").Copy Range("J1")
    End Sub

    In the destination cell, you just need to specify the address of the top-left cell. The code would automatically copy the exact copied range into the destination.

    You can use the same construct to copy data from one sheet to the other.

    The below code would copy A1:D20 from the active sheet to Sheet2.

    Sub CopyRange()
    Range("A1:D20").Copy Worksheets("Sheet2").Range("A1")
    End Sub

    The above copies the data from the active sheet. So make sure the sheet that has the data is the active sheet before running the code. To be safe, you can also specify the worksheet’s name while copying the data.

    Sub CopyRange()
    Worksheets("Sheet1").Range("A1:D20").Copy Worksheets("Sheet2").Range("A1")
    End Sub

    The good thing about the above code is that no matter which sheet is active, it will always copy the data from Sheet1 and paste it in Sheet2.

    You can also copy a named range by using its name instead of the reference.

    For example, if you have a named range called ‘SalesData’, you can use the below code to copy this data to Sheet2.

    Sub CopyRange()
    Range("SalesData").Copy Worksheets("Sheet2").Range("A1")
    End Sub

    If the scope of the named range is the entire workbook, you don’t need to be on the sheet that has the named range to run this code. Since the named range is scoped for the workbook, you can access it from any sheet using this code.

    If you have a table with the name Table1, you can use the below code to copy it to Sheet2.

    Sub CopyTable()
    Range("Table1[#All]").Copy Worksheets("Sheet2").Range("A1")
    End Sub

    You can also copy a range to another Workbook.

    In the following example, I copy the Excel table (Table1), into the Book2 workbook.

    Sub CopyCurrentRegion()
    Range("Table1[#All]").Copy Workbooks("Book2.xlsx").Worksheets("Sheet1").Range("A1")
    End Sub

    This code would work only if the Workbook is already open.

    Copying a Variable Sized Range

    One way to copy variable sized ranges is to convert these into named ranges or Excel Table and the use the codes as shown in the previous section.

    But if you can’t do that, you can use the CurrentRegion or the End property of the range object.

    The below code would copy the current region in the active sheet and paste it in Sheet2.

    Sub CopyCurrentRegion()
    Range("A1").CurrentRegion.Copy Worksheets("Sheet2").Range("A1")
    End Sub

    If you want to copy the first column of your data set till the last filled cell and paste it in Sheet2, you can use the below code:

    Sub CopyCurrentRegion()
    Range("A1", Range("A1").End(xlDown)).Copy Worksheets("Sheet2").Range("A1")
    End Sub

    If you want to copy the rows as well as columns, you can use the below code:

    Sub CopyCurrentRegion()
    Range("A1", Range("A1").End(xlDown).End(xlToRight)).Copy Worksheets("Sheet2").Range("A1")
    End Sub

    Note that all these codes don’t select the cells while getting executed. In general, you will find only a handful of cases where you actually need to select a cell/range before working on it.

    Assigning Ranges to Object Variables

    So far, we have been using the full address of the cells (such as Workbooks(“Book2.xlsx”).Worksheets(“Sheet1”).Range(“A1”)).

    To make your code more manageable, you can assign these ranges to object variables and then use those variables.

    For example, in the below code, I have assigned the source and destination range to object variables and then used these variables to copy data from one range to the other.

    Sub CopyRange()
    Dim SourceRange As Range
    Dim DestinationRange As Range
    Set SourceRange = Worksheets("Sheet1").Range("A1:D20")
    Set DestinationRange = Worksheets("Sheet2").Range("A1")
    SourceRange.Copy DestinationRange
    End Sub

    We start by declaring the variables as Range objects. Then we assign the range to these variables using the Set statement. Once the range has been assigned to the variable, you can simply use the variable.

    Enter Data in the Next Empty Cell (Using Input Box)

    You can use the Input boxes to allow the user to enter the data.

    For example, suppose you have the data set below and you want to enter the sales record, you can use the input box in VBA. Using a code, we can make sure that it fills the data in the next blank row.

    Sub EnterData()
    Dim RefRange As Range
    Set RefRange = Range("A1").End(xlDown).Offset(1, 0)
    Set ProductCategory = RefRange.Offset(0, 1)
    Set Quantity = RefRange.Offset(0, 2)
    Set Amount = RefRange.Offset(0, 3)
    RefRange.Value = RefRange.Offset(-1, 0).Value + 1
    ProductCategory.Value = InputBox("Product Category")
    Quantity.Value = InputBox("Quantity")
    Amount.Value = InputBox("Amount")
    End Sub

    The above code uses the VBA Input box to get the inputs from the user, and then enters the inputs into the specified cells.

    Note that we didn’t use exact cell references. Instead, we have used the End and Offset property to find the last empty cell and fill the data in it.

    This code is far from usable. For example, if you enter a text string when the input box asks for quantity or amount, you will notice that Excel allows it. You can use an If condition to check whether the value is numeric or not and then allow it accordingly.

    Looping Through Cells / Ranges

    So far we can have seen how to select, copy, and enter the data in cells and ranges.

    In this section, we will see how to loop through a set of cells/rows/columns in a range. This could be useful when you want to analyze each cell and perform some action based on it.

    For example, if you want to highlight every third row in the selection, then you need to loop through and check for the row number. Similarly, if you want to highlight all the negative cells by changing the font color to red, you need to loop through and analyze each cell’s value.

    Here is the code that will loop through the rows in the selected cells and highlight alternate rows.

    Sub HighlightAlternateRows()
    Dim Myrange As Range
    Dim Myrow As Range
    Set Myrange = Selection
    For Each Myrow In Myrange.Rows
    If Myrow.Row Mod 2 = 0 Then
    Myrow.Interior.Color = vbCyan
    End If
    Next Myrow
    End Sub

    The above code uses the MOD function to check the row number in the selection. If the row number is even, it gets highlighted in cyan color.

    Here is another example where the code goes through each cell and highlights the cells that have a negative value in it.

    Sub HighlightAlternateRows()
    Dim Myrange As Range
    Dim Mycell As Range
    Set Myrange = Selection
    For Each Mycell In Myrange
    If Mycell < 0 Then
    Mycell.Interior.Color = vbRed
    End If
    Next Mycell
    End Sub

    Note that you can do the same thing using Conditional Formatting (which is dynamic and a better way to do this). This example is only for the purpose of showing you how looping works with cells and ranges in VBA.

    Where to Put the VBA Code

    Wondering where the VBA code goes in your Excel workbook?

    Excel has a VBA backend called the VBA editor. You need to copy and paste the code in the VB Editor module code window.

    Here are the steps to do this:

    1. Go to the Developer tab.vba cells and ranges - Developer Tab in ribbon
    2. Click on the Visual Basic option. This will open the VB editor in the backend.Click on Visual Basic
    3. In the Project Explorer pane in the VB Editor, right-click on any object for the workbook in which you want to insert the code. If you don’t see the Project Explorer, go to the View tab and click on Project Explorer.
    4. Go to Insert and click on Module. This will insert a module object for your workbook.Cells and Ranges in VBA - Module
    5. Copy and paste the code in the module window.Cells and Ranges in VBA - code paste

    You May Also Like the Following Excel Tutorials:

    • Working with Worksheets using VBA.
    • Working with Workbooks using VBA.
    • Creating User-Defined Functions in Excel.
    • For Next Loop in Excel VBA – A Beginner’s Guide with Examples.
    • How to Use Excel VBA InStr Function (with practical EXAMPLES).
    • Excel VBA Msgbox.
    • How to Record a Macro in Excel.
    • How to Run a Macro in Excel.
    • How to Create an Add-in in Excel.
    • Excel Personal Macro Workbook | Save & Use Macros in All Workbooks.
    • Excel VBA Events – An Easy (and Complete) Guide.
    • Excel VBA Error Handling.
    • How to Sort Data in Excel using VBA (A Step-by-Step Guide).
    • 24 Useful Excel Macro Examples for VBA Beginners (Ready-to-use).

    The Range.Select method is used by VBA Macro developers for various purposes. These can be as simple as selecting a cell on an active worksheet, selecting one on another worksheet, or selecting a range of cells on a worksheet from a different workbook.

    Sample code # 1: Selecting a range of cells on the active worksheet

    Sub RangeSelect()
        ActiveSheet.Range("B2:E5").Select
    End Sub
    

    OR

    Sub RangeSelect()
        ActiveSheet.Range("B2", "E5").Select
    End Sub
    

    Sample code # 2: Selecting a range of cells on another worksheet in the same workbook

    Notice that the sample code below doesn’t require us to have “select” text. This is another way of selecting a range of cells by using “Application.Goto” which basically has the same result as “Range.select” method. However, you can still use the “select” method by activating the target worksheet before selecting the specified range.

    Sub RangeSelect()
        Application.Goto ActiveWorkbook.Sheets("AnotherWorksheet").Range("B2:F9")
    End Sub
    

    OR

    Sub RangeSelect()
        Sheets("AnotherWorksheet").Activate
        ActiveSheet.Range(Cells(2, 2), Cells(9, 6)).Select
    End Sub
    


    Sample code # 3: Selecting a range of cells offset from a specified range

    This is commonly used when selecting a range of data, skipping the header row.

    Sub RangeSelect()
        ActiveSheet.Range("B1:E5").Offset(2, 0).Select
    End Sub
    

    To include rows above or columns to the left of the specified range, use negative integers for offset

    Sub RangeSelect()
        ActiveSheet.Range("C3:F8").Offset(-1, -1).Select
    End Sub
    

    Note that the offset works on the entire range, i.e. for a offset of -1 rows on range C3:F8 will result in C2:F7  and an offset of -1 columns will eventually result in the range B2:E7

    Sample code # 4: Selecting the last cell of a column of contiguous data

    The following sample code is used to select the last row of the specified column (ex. column “B”) that has data or is a non-blank cell.

    Sub RangeSelect()
        ActiveSheet.Range("B2").End(xlDown).Select
    End Sub
    

    And if you want to select the entire range of data in a column:

        Sheet1.Range("C2", ActiveSheet.Range("C2").End(xlDown)).Select
    

    Sample code # 5: Selection using named ranges

    You can also use named ranges, instead of specifying the actual range. For instance,

    Application.Union(Range("RangeA"), Range("RangeB")).Select
    

    Sample code # 6: Selecting non-contiguous data

    You can also select non-contiguous data, though you may not find much practical use for it

    Sub nonContiguous()
        Sheet1.Range("B2:E2,D2:D8").Select
    End Sub
    

    Sample code # 7: Selecting non-contiguous data using union

    This is similar to the above method, by using a different approach

    Sub nonContiguous()
        Dim y As Range
        Set y = Application.Union(Range("Sheet1!B2:C3"), Range("Sheet1!C3:D4"))
        y.Select
    End Sub
    

    Needless to say, when working with multiple ranges, all the ranges must lie on the same sheet, or you will get an error. For instance, this piece of code will not work as the two ranges are on 2 different sheets. Or if you’re using named ranges, “RangeA” and “RangeB” should be on the same sheet.

    Sub nonContiguous()
        Dim y As Range
        'This statement will throw an error -- Union method of application class failed
        Set y = Application.Union(Range("Sheet1!B2:C3"), Range("Sheet2!C3:D4"))
        y.Select
    End Sub
    

    Sample code # 7: Selecting intersection of two ranges

    Just like union, you can use intersect to select the intersection of two ranges.

    Sub selectIntersect()
        Dim y As Range
        Set y = Application.Intersect(Range("Sheet1!B2:C4"), Range("Sheet1!C3:D4"))
        y.Select
    End Sub
    
    

    Sample code # 8: Selecting a rectangular range around specified cell

    This can prove useful when you have multiple tables in a sheet and you want to do some operation, like say plot a graph, on any one region of the sheet. For this you use the CurrentRegion Method. CurrentRegion is an area bounded by any combination of blank rows and blank columns.

    Sub selectCurReg()
        ActiveSheet.Range("D3").CurrentRegion.Select
    End Sub
    

    Sample code # 9: Selecting a rectangular range around specified cell including blanks

    The above code (# 8) works fine when there are no blank rows or columns in your data. If you need to include data beyond the blanks, use the code below

    Sub selectCurReg()
        Dim lastCol As Long, lastRow As Long
        lastCol = ActiveSheet.Range("B2").End(xlToRight).Column
        lastRow = ActiveSheet.Cells(65536, 2).End(xlUp).Row
        ActiveSheet.Range("B2", ActiveSheet.Cells(lastRow, lastCol)).Select
    End Sub
    

    Here we are simply getting the last non empty row and column and selecting everything in between

    Sample code # 10: Selecting an entire row

    Use this code to select the entire second row

    Sub selectRow()
        Range("2:2").Select
    End Sub
    

    Sample code # 11: Selecting a range in a sheet from another workbook

    So far, we have seen only how to select a cell / range from within a workbook. It is also possible to select a range from another workbook through VBA:

    Sub selectFromAnotherWB()
        Application.Goto Workbooks("Book2").Sheets("Sheet1").Range("A1:E10")
    End Sub
    

    Note that this will work only if both the Excel files are saved in the same location. If the file paths are different for both, use the complete path to the file

    All of the examples in the article are well applicable to worksheets from another workbook as well.

    Sample code # 12: Selecting a range and then resize the selection

    Sub selectFromAnotherWB()
        Range("B2:F6").Select
        Selection.Resize(Selection.Rows.Count + 1, Selection.Columns.Count - 1).Select
    End Sub
    

    For this we use the resize method. After execution of the first step, the selection looks like

    And after resizing:


    You can find more information on counting rows in Excel here. And more info about dynamically selecting ranges with unknown size, here.

    These were some of the most common ways to select a cell or range of cells using VBA. It is worth mentioning here that, it is best to avoid using select and selection whenever you can. This will prevent Run-time errors that can occur if a user happens to select another cell while the code is being executed. In truth, there should be very few cases you will actually need to use these methods.

    
    


    Download Article


    Download Article

    This wikiHow 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.

    1. 1

      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:[1]

      ActiveSheet.Cells(6, 5).Select
      

      ActiveSheet.Range("E6").Select
      
    2. 2

      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"))
      

      Advertisement

    3. 3

      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")
      
    4. 4

      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
        
    5. Advertisement

    1. 1

      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)).Select
      
      ActiveSheet.Range("C1:D6").Select
      
      ActiveSheet.Range("C1", "D6").Select
      
    2. 2

      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")
      
    3. 3

      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")
      
    4. 4

      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")
        
    5. 5

      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
        
    6. 6

      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
      
    7. 7

      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.
    8. Advertisement

    1. 1

      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:[2]

      A1: Name B1: Sales C1: Quantity
      A2: a B2: $10 C2: 5
      A3: b B3: C3: 10
      A4: c B4: $10 C4: 5
      A5: B5: C5:
      A6: Total B6: $20 C6: 20
    2. 2

      Select the last cell at the bottom of a contiguous column. The following example will select cell A4:

      ActiveSheet.Range("A1").End(xlDown).Select
      
    3. 3

      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
      
    4. 4

      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)).Select
      
      ActiveSheet.Range("A1:" & ActiveSheet.Range("A1"). End(xlDown).Address).Select
      
    5. 5

      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)).Select
      
      ActiveSheet.Range("A1",ActiveSheet.Range("A65536").End(xlUp)).Select
      
    6. Advertisement

    Ask a Question

    200 characters left

    Include your email address to get a message when this question is answered.

    Submit

    Advertisement

    Video

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

    Thanks for submitting a tip for review!

    Advertisement

    About This Article

    Article SummaryX

    1. Use ActiveSheet.Range(«E6»).Select to select E6 on the active sheet.
    2. Use Application.Goto (ActiveWorkbook.Sheets(«Sheet2»).Range(«E6»)) to select E6 on Sheet2.
    3. Add Workbooks(«BOOK2.XLS») to the last step to specify that the sheet is in BOOK2.XLS.

    Did this summary help you?

    Thanks to all authors for creating a page that has been read 167,714 times.

    Is this article up to date?

    Понравилась статья? Поделить с друзьями:
  • Excel vba scrollbar как
  • Excel vba scripting dictionary
  • Excel vba saving as pdf
  • Excel vba saveas pdf
  • Excel vba saveas excel file