📊 Excel VBA Top100
📋

ColorSheetTabs

シート管理

シートタブに色を設定する

ワークシートのタブを色分けするVBAマクロです。Tab.ColorIndexまたはTab.Colorプロパティを使って各シートのタブに色を設定し、視覚的な区別を容易にします。月別・部署別・ステータス別など任意のルールで色を割り当てることができます。条件によって動的に色を変えるロジックを組み込めば、進捗管理ツールなどで特に有用です。内部ではWorksheetsコレクションをループしながらTab.ColorにRGB値を代入しており、条件分岐(Select Case)でシート名やインデックスに応じた色を自動判定する設計にも拡張できます。ListAllSheetsで出力した一覧と組み合わせれば、色分けルールの妥当性を一目で検証できる管理体制が整います。タブを1枚ずつ右クリックして色を選ぶ操作が不要になり、大量シートでも瞬時に統一できます。

ColorSheetTabs デモ

📖 使い方

  1. VBAエディタを開く(Alt + F11)
  2. モジュールを挿入(挿入 > モジュール)
  3. 下記VBAコードをコピー&ペースト
  4. ブック上で実行(Alt + F8 でマクロ選択)
💡 実行例: 実行するとシート名と色を選択するダイアログが表示される

🎯 活用シーン

  • ✓月別シートを季節の色で分類して視認性を向上
  • ✓完了・進行中・未着手のシートをステータス別に色分け
  • ✓部署別ワークブックで各部署のシートをチームカラーに統一
  • ✓案件の進捗フェーズ(提案中・受注・完了)に応じてタブ色を自動更新し、案件管理表の一覧性を高めたいとき
  • ✓多拠点管理のブックで、拠点ごとに固定の色を割り当てて視認性を上げたいとき

💡 実装のヒント

  • ▸Tab.Color = RGB(255, 0, 0) でRGB値を使った色指定ができます
  • ▸Tab.ColorIndex = xlColorIndexNone でデフォルト色に戻せます
  • ▸シート名のキーワードに応じて色を分岐するSelect Caseが便利です
  • ▸色覚特性に配慮する場合は、色だけでなくシート名にも状態を示す接頭辞を付けると、より確実に情報が伝わります。
  • ▸色のルールが多くなる場合は、色コードの対応表を別シートに定義しておくとメンテナンスがしやすくなります。

💻 VBAコード

' ColorSheetTabs
' -----------------
' Macro Name: ColorSheetTabs
' Description: シートタブに色を設定する
' Parameters: なし
' Returns: なし
' Usage: 実行するとシート名と色を選択するダイアログが表示される
' -----------------

Sub ColorSheetTabs()
    Dim ws As Worksheet
    Dim sheetName As String
    Dim colorList As String
    Dim colorCode As Long
    Dim selectedColor As String

    On Error GoTo ErrorHandler

    sheetName = InputBox("色を設定するシート名を入力:", "タブ色設定", ActiveSheet.Name)

    If sheetName = "" Then
        Exit Sub
    End If

    On Error Resume Next
    Set ws = Worksheets(sheetName)
    On Error GoTo ErrorHandler

    If ws Is Nothing Then
        MsgBox "「" & sheetName & "」は存在しません。", vbExclamation
        Exit Sub
    End If

    colorList = "色を選択してください:" & vbCrLf & _
                "1: 赤" & vbCrLf & _
                "2: 緑" & vbCrLf & _
                "3: 青" & vbCrLf & _
                "4: 黄" & vbCrLf & _
                "5: 紫" & vbCrLf & _
                "6: 橙" & vbCrLf & _
                "7: 灰" & vbCrLf & _
                "8: 黒" & vbCrLf & _
                "0: 色なし"

    selectedColor = InputBox(colorList, "タブ色設定", "1")

    Select Case selectedColor
        Case "1": colorCode = RGB(255, 0, 0)
        Case "2": colorCode = RGB(0, 176, 80)
        Case "3": colorCode = RGB(0, 112, 192)
        Case "4": colorCode = RGB(255, 192, 0)
        Case "5": colorCode = RGB(112, 48, 160)
        Case "6": colorCode = RGB(255, 102, 0)
        Case "7": colorCode = RGB(166, 166, 166)
        Case "8": colorCode = RGB(0, 0, 0)
        Case "0": colorCode = xlColorIndexNone
        Case Else
            MsgBox "無効な選択です。", vbExclamation
            Exit Sub
    End Select

    ws.Tab.Color = colorCode

    If selectedColor = "0" Then
        MsgBox "「" & sheetName & "」のタブ色をリセットしました。", vbInformation
    Else
        MsgBox "「" & sheetName & "」のタブ色を設定しました。", vbInformation
    End If
    Exit Sub

ErrorHandler:
    MsgBox "エラーが発生しました: " & Err.Description, vbCritical
End Sub