What is the difference between Sheets.Select and Sheets.Activate?
.activate
is you clicking on the worksheet tab.
.select
simulates you doing a control and click on the tab. In VBA you're not in the sheet yet.
You can .select
more than one sheet but .activate
only one.
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.
To expand on the above: When the code below is run with Replace:=False no worksheet deactivation event occurs on sheet4. If Replace:=True is used instead then the de-activation event will fire.
Preventing the event is desirable in most circumstances as it can cause unexpected behaviour.
This means that select is only the equivalent of CTRL+Clicking a worksheet tab IF replace:=false is used.
sub a
Dim rng As Range
Sheet4.Select Replace:=False
Set rng = Selection
Sheet5.Select Replace:=True
Selection = rng.Value
end sub
Thanks for your posts as it helped me understand the difference.
Harvey