たとえば、Sheet1とSheet3のシート見出しを赤色に設定する場合、次のように操作します。
この操作をマクロ記録すると、次のようなコードが生成されます。
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を操作するのでしたら、この記録されたコードを再利用すればいいでしょう。そうではなく
マクロを実行するときに選択されているシートだけを操作しようと、次のようなコードを実行しても結果は失敗に終わります。
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オブジェクトのプロパティだということも、認知度を下げている理由のひとつでしょう。
なお、シートをグループ化する方法は「シートをグループ化する」をご覧ください。