Grouping Sheets
Worksheets can be manually grouped by holding down the Shift (or Ctrl) key as you click on several sheets.
It is possible to group sheets by using the Select method of the Worksheets collection in conjunction with the Array function.
The following code groups the first, second and third sheets of a workbook and makes the second worksheet active.
Worksheets( Array(1,2,3) ).Select
Worksheets(2).Activate
It is also possible to group particular worksheets using the Select method of the worksheet object.
The first worksheet is selected in the normal way and subsequent worksheets are added to the group by using the Select method while setting its Replace parameter to False.
Worksheets("Sheet1").Select
Worksheets("Sheet1").Select Replace:=False
Worksheets("Sheet1").Select Replace:=False
This technique can be useful when you want to group specific sheets.
Making Changes
When you group sheets manually any changes or formatting changes made to one sheet are made to the all.
This is not the case when you apply changes to a group using VBA.
Only the active sheet is affected when you apply changes to a grouped sheet using VBA code.
The only way to make changes to all the worksheets in a group is to use a For-Each loop and apply the changes to each worksheet individually.
Set colSheets = Worksheets( Array(1,2,3) )
For Each objWorksheet in colSheets
Next objWorksheet
Currently Selected Sheets
If you want to identify the sheets that are currently grouped you can use the SelectedSheets property of the Window object.
For Each objWorksheet in ActiveWindow.SelectedSheets
Next objWorksheet
This property is a member of the Window object because you can open several windows of the same workbook and each window can display a different worksheet (or worksheet group).
Adding the following code will mean that any values enters into cells in the named range "NamedRange" on Sheet1 will automatically also appear in Sheet2 and Sheet3 automatically.
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Intersect(Range("NamedRange"), Target) Is Nothing Then
Sheets(Array("Sheet1", "Sheet2", "Sheet3")).Select
Else
Me.Select
End If
End Sub
If you want the same data to appear on other sheets but in a different place use the following:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Intersect(Range("NamedRange"), Target) Is Nothing Then
Range("NamedRange").Copy Destination:=Sheets("Sheet2").Range("A1")
Range("NamedRange").Copy Destination:=Sheets("Sheet3").Range("C20")
Else
Me.Select
End If
End Sub
© 2024 Better Solutions Limited. All Rights Reserved. © 2024 Better Solutions Limited TopPrevNext