重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

【GOLF me!】初月無料お試し

Excelのブック内のシートの色を取得するマクロを教えて欲しいです。
未入力のところをシートを黄色にして分かるようにしてるのですが、一覧を作りたくて、シートの色が変更されているところ、またはシートの色が分かるようなマクロはないでしょうか?

A 回答 (3件)

シートの色とは何でしょうか?セルの背景色でしょうか?ブック内のすべてのシートのすべてのセルの背景色ですか?一覧にはアドレス(行番号

と列名)と色名を入れるのですか?
    • good
    • 0

あなたにマクロが操作できるという前提でお話します


Excelでシートの色を取得して一覧を作成するマクロを作ることができます。以下のVBAコードを使えば、すべてのシートの名前とシートタブの色を一覧化した結果を新しいシートに出力できます。

Sub GetSheetColors()
Dim ws As Worksheet
Dim summarySheet As Worksheet
Dim i As Integer
Dim colorValue As Long

' 結果を出力する新しいシートを作成
On Error Resume Next
Set summarySheet = ThisWorkbook.Worksheets("シート色一覧")
On Error GoTo 0
If summarySheet Is Nothing Then
Set summarySheet = ThisWorkbook.Worksheets.Add
summarySheet.Name = "シート色一覧"
Else
summarySheet.Cells.Clear ' 既存シートの場合クリア
End If

' ヘッダーの設定
summarySheet.Cells(1, 1).Value = "シート名"
summarySheet.Cells(1, 2).Value = "シートタブの色 (RGB値)"
summarySheet.Cells(1, 3).Value = "タブ色 (説明)"
summarySheet.Rows(1).Font.Bold = True

i = 2 ' 出力行を設定

' シートの色を取得
For Each ws In ThisWorkbook.Worksheets
summarySheet.Cells(i, 1).Value = ws.Name ' シート名

' シートの色を取得
colorValue = ws.Tab.Color
If IsEmpty(colorValue) Then
summarySheet.Cells(i, 2).Value = "なし" ' 色なしの場合
summarySheet.Cells(i, 3).Value = "デフォルト色"
Else
summarySheet.Cells(i, 2).Value = colorValue ' 色値
summarySheet.Cells(i, 3).Value = "RGB(" & _
(colorValue Mod 256) & ", " & _
((colorValue \ 256) Mod 256) & ", " & _
(colorValue \ 65536) & ")"
End If

i = i + 1
Next ws

' 列の幅を自動調整
summarySheet.Columns("A:C").AutoFit

MsgBox "シート色一覧を作成しました。", vbInformation
End Sub



マクロの実行手順
1.VBAエディタを開く
   Alt + F11 を押してVBAエディタを開きます。
2.新しいモジュールを挿入
   メニューの 挿入 → 標準モジュール を選択。
3.コードを貼り付ける
   上記のコードを貼り付けます。
4.マクロを実行
   VBAエディタを閉じて、Excelに戻り、 Alt + F8 を押して「GetSheetColors」を選択し「実行」をクリック。

実行結果
・新しいシート(または既存の "シート色一覧" シート)が作成され、すべてのシート名とそのタブ色(RGB値)が一覧表示されます。
・色なし(デフォルト色)の場合は「なし」と表示されます。
・RGB値は色の具体的な構成値として記載されます。

このマクロを使うことで、黄色に設定されたシートなども簡単に特定できます。
    • good
    • 0

以下のマクロを使うと、Excelブック内のすべてのシートのタブの色を取得し、それを一覧として出力できます。

このコードは新しいシートにシート名と色の一覧を作成します。

Sub GetSheetColors()
Dim ws As Worksheet
Dim reportSheet As Worksheet
Dim i As Long
Dim colorName As String
Dim tabColor As Variant

' 新しいシートを作成してレポートシートとして使う
Set reportSheet = ThisWorkbook.Sheets.Add
reportSheet.Name = "SheetColorsReport" & Format(Now, "yyyymmddhhmmss")

' ヘッダーを設定
reportSheet.Cells(1, 1).Value = "シート名"
reportSheet.Cells(1, 2).Value = "色 (RGB)"
reportSheet.Cells(1, 3).Value = "色 (名前)"
reportSheet.Rows(1).Font.Bold = True

' シート情報を取得
i = 2 ' データ出力行
For Each ws In ThisWorkbook.Sheets
tabColor = ws.Tab.Color

If IsNull(tabColor) Then
colorName = "(未設定)"
Else
colorName = "R:" & Red(tabColor) & " G:" & Green(tabColor) & " B:" & Blue(tabColor)
End If

' シート名と色を出力
reportSheet.Cells(i, 1).Value = ws.Name
reportSheet.Cells(i, 2).Value = tabColor
reportSheet.Cells(i, 3).Value = colorName
i = i + 1
Next ws

' 列の幅を自動調整
reportSheet.Columns("A:C").AutoFit

MsgBox "シート色の一覧が作成されました。", vbInformation
End Sub

' RGB値を分解する関数
Function Red(color As Long) As Long
Red = color Mod 256
End Function

Function Green(color As Long) As Long
Green = (color \ 256) Mod 256
End Function

Function Blue(color As Long) As Long
Blue = (color \ 65536) Mod 256
End Function

使用方法

1. ExcelでAlt + F11 を押してVBAエディタを開きます。
2. メニューで 挿入 > 標準モジュール を選択し、上記コードを貼り付けます。
3. VBAエディタを閉じて、ExcelでAlt + F8を押して GetSheetColors を選択して実行します。
4. 新しいシートにシート名とタブの色情報が出力されます。

出力内容

• シート名: 各シートの名前。
• 色 (RGB): シートタブの色をRGB値で表記。
• 色 (名前): RGB値を「R:xxx G:xxx B:xxx」の形式で表記。また、タブの色が未設定の場合は「(未設定)」と表示。

これでタブの色がすぐに確認できる一覧を作成できます!

上記は生成AIの解答です。
参考になれば幸いです。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!