たとえば、Sheet1とSheet3のシート見出しを赤色に設定する場合、次のように操作します。
1. Sheet1をアクティブにする
2. Ctrlキーを押しながらSheet3のシート見出しをクリックして選択する
3. Sheet1のシート見出しを右クリックして[シート見出しの色]を実行する
4. シート見出しの色を赤色に設定する
この操作をマクロ記録すると、次のようなコードが生成されます。
Sub Macro1()
Sheets(Array("Sheet1", "Sheet3")).Select
Sheets("Sheet1").Activate
ActiveWorkbook.Sheets("Sheet1").Tab.ColorIndex = 3
ActiveWorkbook.Sheets("Sheet3").Tab.ColorIndex = 3
End Sub
毎回Sheet1とSheet3を操作するのでしたら、この記録されたコードを再利用すればいいでしょう。そうではなく
現在選択されているシート(グループ化されているシート) を対象にしたマクロを作りたいのでしたら、ここで記録されたコードはあまり役立ちません。なぜなら、Sheet1やSheet3といったシート名が固定されているからです。
マクロを実行するときに選択されているシートだけを操作しようと、次のようなコードを実行しても結果は失敗に終わります。
Sub Sample1()
ActiveSheet.Tab.ColorIndex = 3
End Sub
アクティブシートとはアクティブなシートであり、これは常に1つしか存在しません。アクティブシートと
現在選択されているシート(グループ化されているシート) は別だからです。
現在選択されているシート(グループ化されているシート) に対する操作は、次のようにSelectedSheetsプロパティを使います。SelectedSheetsプロパティは、現在選択されているシートのコレクションを返します。
Sub Sample2()
Dim s
For Each s In ActiveWindow.SelectedSheets
s.Tab.ColorIndex = 3
Next s
End Sub
SelectedSheetsプロパティがあまり有名でないのは、上記のようにグループ化したシートを操作してもマクロ記録されないからです。また、SelectedSheetsプロパティはWorkbookオブジェクトではなくWindowオブジェクトのプロパティだということも、認知度を下げている理由のひとつでしょう。
なお、シートをグループ化する方法は「
シートをグループ化する 」をご覧ください。