Excel VBAでシートの見出しの色を変更する方法

今回の目標

「マクロでシートの色を変えられない?」や「ブックのシートの色を初期化できない?」と思ったあなたへ。 この記事では、シートの見出しの色を変更する方法や、ブックのシート全ての見出しの色を元に戻す方法等を解説します!
実務で使える具体例つきです。

目標リスト

  • シートの見出しの色を変更できるようになる
  • シートの見出しの色を初期化できるようになる

説明

シートの見出しの色を変更する方法

Excelでは、シートの見出し(シートの下にあるシート名が書かれたタブのこと)の色を変更できます。
マクロで、シートの見出しの色を変更したり、元に戻したりすることができます。
シートの見出しについての画像

シートオブジェクト.Tab.Color プロパティ

シートオブジェクト.Tab.Color

シートの見出しの色を細かく指定したい場合、シートオブジェクトにある Tab オブジェクト の Color プロパティを使用します。
Color プロパティに、定数やRGB関数で返ってきた値を代入することと、色を指定できます。
※ Tab オブジェクトは、シートの見出しのことです。

シートオブジェクト.Tab.ColorIndex プロパティ

シートの見出しの色を簡単に変更したい場合、シートオブジェクトにある Tab オブジェクト の ColorIndex プロパティを使用します。 Tab オブジェクトは、シートの見出しのことです。 ColorIndex プロパティに対応した 1 ~ 56 を代入することで、色を指定できます。
数値で指定するため、何色を指定したか直感的でなく、可読性が下がります。 特別な理由がない限り、Tab.Color プロパティを使用しましょう。

シートオブジェクト.Tab.ColorIndex

色の指定方法について

ExcelVBAで色を指定する場合、主に3通りあります。

1つ目は Color プロパティに、定数を代入する方法です。「vbBlack」なら黒、「vbGreen」ならです。8種類あります。
なお、色を初期化する(無色にする)場合は「False」を代入します。

2つ目は Color プロパティに、RGB関数を使用して数値を代入する方法です。
Red(赤)、Green(緑)、Blue(青)」の3色を 0〜255 の数値で混ぜて、好きな色を作れます。 例えば、RGB(255, 0, 0) は、RGB(0, 255, 0) は、RGB(0, 0, 255) はになります。 他には、RGB(255, 255, 255) は、RGB(0, 0, 0) は、RGB(255, 255, 0) は黄色、RGB(0, 255, 255) は水色、RGB(255, 0, 255) はマゼンタになります。

3つ目は ColorIndex プロパティに、1 ~ 56 を代入する方法です。
この「56」はExcelの標準パレットの番号です。 ColorIndex に 1 を代入すると黒、2 を代入するとになります。56まで対応した色が振られています。
なお、色を初期化する(無色にする)場合は定数「xlNone」を代入します。

※明るい色は、背景色を灰色にしています。

色のサンプル

シートの見出しの色は、アクティブなシートと非アクティブなシートで見え方が異なります。 下の表では、定数と対応するRGB値を示しています。画像で色の違いを確認してみましょう。 ※ ColorIndex は 1 ~ 8 のみ となります。

定数ColorIndexRGB値非アクティブアクティブ
vbBlack1RGB(0, 0, 0)シートの見出し(黒:非アクティブ)
シートの見出し(黒:アクティブ)
vbWhite2RGB(255, 255, 255)シートの見出し(白:非アクティブ)シートの見出し(白:アクティブ)
vbRed3RGB(255, 0, 0)シートの見出し(赤:非アクティブ)シートの見出し(赤:アクティブ)
vbGreen4RGB(0, 255, 0)シートの見出し(緑:非アクティブ)シートの見出し(緑:アクティブ)
vbBlue5RGB(0, 0, 255)シートの見出し(青:非アクティブ)シートの見出し(青:アクティブ)
vbYellow6RGB(255, 255, 0)シートの見出し(黄:非アクティブ)シートの見出し(黄:アクティブ)
マゼンタvbMagenta7RGB(255, 0, 255)シートの見出し(マゼンタ:アクティブ)シートの見出し(マゼンタ:アクティブ)
シアンvbCyan8RGB(0, 255, 255)シートの見出し(シアン:非アクティブ)シートの見出し(シアン:アクティブ)
初期化(False)xlNone(対応無し)シートの見出し(無色:非アクティブ)シートの見出し(無色:アクティブ)

Tab.ColorIndex の数値と RGB関数の対応表

Tab.ColorIndex の数値と RGB関数の対応表です。

数値RGB値数値RGB値
1RGB(0, 0, 0)29RGB(128, 0, 128)
2RGB(255, 255, 255)30RGB(128, 0, 0)
3RGB(255, 0, 0)31RGB(0, 128, 128)
4RGB(0, 255, 0)32RGB(0, 0, 255)
5RGB(0, 0, 255)33RGB(0, 204, 255)
6RGB(255, 255, 0)34RGB(204, 255, 255)
7RGB(255, 0, 255)35RGB(204, 255, 204)
8RGB(0, 255, 255)36RGB(255, 255, 153)
9RGB(128, 0, 0)37RGB(153, 204, 255)
10RGB(0, 128, 0)38RGB(255, 153, 204)
11RGB(0, 0, 128)39RGB(204, 153, 255)
12RGB(128, 128, 0)40RGB(255, 204, 153)
13RGB(128, 0, 128)41RGB(51, 102, 255)
14RGB(0, 128, 128)42RGB(51, 204, 204)
15RGB(192, 192, 192)43RGB(153, 204, 0)
16RGB(128, 128, 128)44RGB(255, 204, 0)
17RGB(153, 153, 255)45RGB(255, 153, 0)
18RGB(153, 51, 102)46RGB(255, 102, 0)
19RGB(255, 255, 204)47RGB(102, 102, 153)
20RGB(204, 255, 255)48RGB(150, 150, 150)
21RGB(102, 0, 102)49RGB(0, 51, 102)
22RGB(255, 128, 128)50RGB(51, 153, 102)
23RGB(0, 102, 204)51RGB(0, 51, 0)
24RGB(204, 204, 255)52RGB(51, 51, 0)
25RGB(0, 0, 128)53RGB(153, 51, 0)
26RGB(255, 0, 255)54RGB(153, 51, 102)
27RGB(255, 255, 0)55RGB(51, 51, 153)
28RGB(0, 255, 255)56RGB(51, 51, 51)

シートの見出しの色を変更する

1.定数を代入してシートの見出しの色を変更する

Color プロパティに定数を代入して、シートの見出しの色を変更する方法です。
サンプルコードでは、定数を使い、"Sheet1" を「赤」、"Sheet2" を「緑」、"Sheet3" を「青」に変更します。

サンプルコード

Sub SampleSheetTabColor1()
    ' "Sheet1" の見出しを「赤」にする
    Worksheets("Sheet1").Tab.Color = vbRed
    ' "Sheet2" の見出しを「緑」にする
    Worksheets("Sheet2").Tab.Color = vbGreen
    ' "Sheet3" の見出しを「青」にする
    Worksheets("Sheet3").Tab.Color = vbBlue
End Sub
【実行サンプル】

● 実行前
プログラム実行前の画像

● 実行後
プログラム実行後の画像

2.RGB関数を使ってシートの見出しの色を変更する

Color プロパティにRGB関数の戻り値を代入して、シートの見出しの色を変更する方法です。
サンプルコードでは、RGB関数を使い、"Sheet1" を「赤」、"Sheet2" を「緑」、"Sheet3" を「青」に変更します。

サンプルコード

Sub SampleSheetTabColor2()
    ' Sheet1 の見出しを「黄色」にする
    Worksheets("Sheet1").Tab.Color = RGB(255, 255, 0)
    ' Sheet2 の見出しを「マゼンタ」にする
    Worksheets("Sheet2").Tab.Color = RGB(255, 0, 255)
    ' Sheet3 の見出しを「シアン」にする
    Worksheets("Sheet3").Tab.Color = RGB(0, 255, 255)
End Sub
【実行サンプル】

● 実行前
プログラム実行前の画像

● 実行後
プログラム実行後の画像

3.ColorIndex プロパティで色を変更する

ColorIndex プロパティに 1 ~ 56 を代入して、シートの見出しの色を変更する方法です。
RGB関数や、「vbRed」等の定数は使えません。

サンプルコード

Sub SampleSheetTabColor3()
    ' Sheet1 の見出しを「濃い緑色」にする
    Worksheets("Sheet1").Tab.ColorIndex = 10
    ' Sheet2 の見出しを「紺色」にする
    Worksheets("Sheet2").Tab.ColorIndex = 25
    ' Sheet3 の見出しを「橙色」にする
    Worksheets("Sheet3").Tab.ColorIndex = 40
End Sub
【実行サンプル】

● 実行前
プログラム実行前の画像

● 実行後
プログラム実行後の画像

4.シートの見出しの色を他シートと入れ替える

シートの見出しの色を他シートと入れ替える方法です。
1つ目のシートの見出しの色(以下、シートの色)を変数に代入し、1つ目のシートの色を2つ目のシートの色を代入します。 最後に、2つ目のシートの色を1つ目のシートの色に代入して完了です。 サンプルコードでは、"Sheet1" と "Sheet2" のシートの色を入れ替えています。

サンプルコード

Sub SampleSheetTabColor4()
    Dim col As Long
    
    ' "Sheet1" の見出しの色を取得する
    col = Worksheets("Sheet1").Tab.Color
    ' "Sheet1" の見出しの色を "Sheet2" の色にする
    Worksheets("Sheet1").Tab.Color = _
        Worksheets("Sheet2").Tab.Color
    ' "Sheet2" の見出しの色を "Sheet1" の色にする
    Worksheets("Sheet2").Tab.Color = col
End Sub
【実行サンプル】

● 実行前
プログラム実行前の画像

● 実行後
プログラム実行後の画像

5.シートの見出しの色を初期化する

シートの見出しの色を初期化する(無色にする)方法です。
「Tab.Color」に "False" か、「Tab.ColorIndex」に "xlNone" を代入することで元に戻せます。
サンプルコードでは、「Tab.Color」に "False" を代入して、全てのシートの見出しの色を元に戻します。

サンプルコード

Sub SampleSheetTabColor5()
    Dim ws As Worksheet
    
    ' 全シートの見出しの色を初期化する
    For Each ws In Worksheets
        ws.Tab.Color = False
    Next ws
End Sub
【実行サンプル】

● 実行前
プログラム実行前の画像

● 実行後
プログラム実行後の画像

色を指定したらエラーが発生した!?

1.ColorIndex に 1 ~ 56 以外を代入した

ColorIndex プロパティに Color プロパティ等で使用する「vbRed」や「vbGreen」等を使用すると、エラーが発生します。
ColorIndex プロパティは、1 ~ 56 の数字か、xlNone を代入します。
Color プロパティは、「vbRed」等の定数か、RGB関数の戻り値を代入します。
厄介な点が、本現象のエラーは、存在しないシートを指定した場合に発生するエラーと同じ「実行時エラー'9': インデックスが有効範囲にありません。」が発生することです。
2つのプロパティを正しく使い分けましょう。

サンプルコード

Sub SampleSheetTabColor_Error1()
    '「Worksheets("Sheet1").Tab.Color = vbRed」が正しい
    Worksheets("Sheet1").Tab.ColorIndex = vbRed
End Sub
【実行サンプル】

実行時エラー '9':
インデックスが有効範囲にありません。

※ 稀に、別のエラーが発生する場合があります。

ページの先頭へ