What is the difference between Sheets.Select and Sheets.Activate?

excel, spreadsheet, vba

Solution

The difference is in their flexibility.

`Activate` make the specified sheet the active sheet, and may only be applied to a single sheet

`Select` allow for optionally extending the currently selected sheets to include the specified sheet, eg

Worksheets("Sheet2").Select Replace:=False

and also allow for selecting an array of sheets

Sheets(Array("Sheet3", "Sheet2")).Select

In their minimal form `Select` and `Activate` do the same thing.

For example, if only one sheet is currently selected (say `Sheet3`) or if more than one sheet is selected but excluding say `Sheet2`, then `Worksheets("Sheet2").Select` and `Worksheets("Sheet2").Activate` both make `Sheet2` the sole selected and active sheet.

On the other hand, if say both `Sheet2` and `Sheet3` are selected and `Sheet2` is the active sheet, then `Worksheets("Sheet3").Activate` leaves both sheets selected and makes `Sheet3` the active sheet, whereas `Worksheets("Sheet2").Select` makes `Sheet3` the sole selected and active sheet.

Problem

In VBA for Excel, what is the difference between `Sheets.Select` and `Sheets.Activate` ?

Original source

Related problems