【Excel VBA】シートの色を変更する方法まとめ

はじめに

こんにちは、管理人のりゅうです。
新しくシートを作成した場合は、不要なシートを識別したい場合、シートの色を変更して識別したい場合があるかと思います。
シートの色を変更するには、WorksheetsオブジェクトのColorIndex/Colorプロパティを使用しましょう。
本記事では、ColorIndex/Colorプロパティの「基本的な使い方」「応用パターン」「注意点」について解説します。

シートの色を変更する

サンプルコードを交えて解説いたします。
前提として、見出しの色変更には以下の2通りの方法があります。

変更のパターン
  • ColorIndex指定
  • RGB指定

サンプルコード

サンプルコード
Public Sub changeWorksheetColor()

    ' Sheet1を黄色に変更(ColorIndex指定)
    ThisWorkbook.Worksheets("Sheet1").Tab.ColorIndex = 6
    
    ' Sheet2灰色に変更(RGB指定)
    ThisWorkbook.Worksheets("Sheet2").Tab.Color = RGB(128, 128, 128)
    
    ' Sheet3の色を色なしに変更
    ThisWorkbook.Worksheets("Sheet3").Tab.ColorIndex = xlColorIndexNone
End Sub

実行結果

実行前

実行後

ColorIndexプロパティは、定められている数字を入力するだけで色を変更できます。
Colorプロパティは、RGB指定で細かい色の調整が可能です。
色なしに変更する場合は、ColorIndexプロパティに、「xlColorIndexNone」を指定しましょう。

補足事項

ColorIndexとColorのどちらを使うべきか?

各プロパティのメリット・デメリットを以下に示します。

項目ColorIndexColor
値の形式1 – 56の番号
+ xlColorIndexNone(色なし)
RGB(赤, 緑, 青)
※各色 0 – 255
利用できる色数56色約 1,670万色
メリット・記載がシンプルでスッキリする
・ColorIndex = xlColorIndexNoneで「色なし」に変更可能
・細かい色の調整が可能
・テーマ・バージョンに関わらず、一貫した色を設定できる。
デメリット・色の種類が少ない
・指定した色が、テーマ・バージョンによって異なる可能性あり
・記述がやや冗長になってしまう。
・「色なし」への変更不可。

ColorIndexプロパティは、1 – 56色の中に設定したい色がある場合は、記述がスッキリするのでオススメです。
ただし、指定した色がテーマ・バージョンによって異なる可能性があるため、他者に送付する資料などをVBAで生成する場合は、Colorプロパティをオススメでします。

Colorプロパティは、記載がやや冗長になりますが、細かい色の調整が可能で、テーマやバージョンによって色が異ならないのでオススメです。

「色なし」に変更する場合は ColorIndexプロパティしか出来ないので注意しましょう。

代表的な色の一覧

よく使う色のColorIndexとRGB値について、参考として以下に示します。
以下以外の色については、【Excel VBA】色の一覧表 – (ColorIndex/RGB値/16進数/XlRgbColor定数)にてまとめています。

ColorIndexRGB値
1RGB(0, 0, 0)
2RGB(255, 255, 255)
3RGB(255, 0, 0)
4RGB(0, 255, 0)
5RGB(0, 0, 255)
6RGB(255, 255, 0)
15RGB(192, 192, 192)
16RGB(128, 128, 128)

ColorIndexはテーマ・バージョンによって異なる可能性があるためご注意ください。

よく使う応用サンプルコード

複数シートの色を変更する

以下は、ブック内に「月報」という名前が含まれるシートがあれば、青色に変更します。
「月報_202507」「月報_202508」などの命名規則の場合は、これらが一括で青色に変更されます。

サンプルコード
Sub ChangeSheetColorByName()
    Dim ws As Worksheet

    For Each ws In ThisWorkbook.Worksheets
        ' 名前に「月報」が含まれていたらタブ色を青に変更
        If InStr(ws.Name, "月報") > 0 Then
            ws.Tab.Color = RGB(0, 112, 192)
        End If
    Next ws
End Sub

IF条件を変更することで、その他柔軟な条件にも対応できます。

すべてのシートの色をクリアする

サンプルコード
Public Sub clearWorksheetColor()
    Dim ws As Worksheet ' Worksheetオブジェクト
   
    ' すべてのシート分ループ
    For Each ws In ThisWorkbook.Worksheets

        ' シートの見出しを色なしに変更
        ws.Tab.ColorIndex = xlColorIndexNone
    Next ws
End Sub

まとめ

今回は、シートの色を変更する方法について解説しました。

ColorIndex/Colorプロパティにて、シートの色を使い分けることで、資料としての視認性や可読性を高めることができます。
本記事の注意点などを読んで頂き、シートの色分けをしてみましょう!

関連記事はこちら

オススメの書籍

Excel 2019/2016/2013 VBAプログラミング実践 (よくわかる)

Excel VBAを始めてみたばかりの方へオススメです!
本記事のような具体的なコードも大事ですが、Excel VBA全体の流れを体系的に学べる書籍が 1冊あると理解が一気に進みます。

(サンプルファイル・無料電子版付)できる大事典 Excel VBA 2019/2016/2013&Microsoft 365

本のタイトルの通りで、まさに辞典のように何でも載っています。
メジャーなサンプルコードからマイナーなものまで載っていて、パラパラめくるだけでも楽しいです。
約1,000ページもあるので重いですが、購入すると電子版も付いてくるのでオススメです!


よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

大手外資系コンサルティングファーム勤務。ExcelVBA歴は8年。金融関係のプロジェクトにて約100万レコードを処理するマクロの開発実績あり。ExcelVBAの基礎・応用情報を発信中。

コメント

コメントする

CAPTCHA