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

📖 使い方
- VBAエディタを開く(Alt + F11)
- モジュールを挿入(挿入 > モジュール)
- 下記VBAコードをコピー&ペースト
- ブック上で実行(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