重要なお知らせ

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

電子書籍の厳選無料作品が豊富!

VBAでExcelの複数のシートのうち、ある範囲に赤色塗りつぶしのセルが含まれているシートのみ、シートの色を変更したいと考えています。

シートの色を変更するVBAは調べられたのですが、その前の判定部分がどう書けば良いか分からないです。

お助けいただけないでしょうか?

質問者からの補足コメント

  • 早速ありがとうございます!
    残念ながら条件付き書式による赤塗りつぶしを判定したくて…
    1つ上の行と比較して一致しない場合は赤塗りつぶしという条件付き書式を利用しています。

    No.1の回答に寄せられた補足コメントです。 補足日時:2016/08/30 23:43
  • ありがとうございます!
    明日試してみます

    No.2の回答に寄せられた補足コメントです。 補足日時:2016/08/31 20:06

A 回答 (2件)

No.1です。



条件付き書式で色付けされているというコトですので・・・
お使いのバージョンがExcel2010以降であれば、DisplayFormatオブジェクトが使えます。
↓のコードにしてみてください。

Sub Sample2()
Dim k As Long, c As Range, myFlg As Boolean
For k = 1 To Worksheets.Count
For Each c In Worksheets(k).UsedRange
If c.DisplayFormat.Interior.ColorIndex = 3 Then
myFlg = True
Exit For
End If
Next c
If myFlg = True Then
Worksheets(k).Tab.ColorIndex = 3
myFlg = False
End If
Next k
End Sub

※ バージョンが2007までの場合は使えません。
条件付き書式の条件をそのままコード内に入れてやる必要があると思います。

補足を拝見すると
>1つ上の行と比較して一致しない場合は赤塗りつぶし・・・
というコトですので、
上記コードの
>If c.DisplayFormat.Interior.ColorIndex = 3 Then
の行を
>If c.Row > 1 And c <> c.Offset(-1) Then
に変更してみてください。m(_ _)m
この回答への補足あり
    • good
    • 0
この回答へのお礼

Excelのバージョンが2010でしたので
頂いたコードのまま、対応できました。
非常に助かりました!
ありがとうございます。

お礼日時:2016/09/01 17:06

こんばんは!



>シートの色を変更したい・・・
とはシート見出しの色のコトですよね?

一例です。
オーソドックスに・・・

Sub Sample1()
Dim k As Long, c As Range, myFlg As Boolean
For k = 1 To Worksheets.Count
For Each c In Worksheets(k).UsedRange
If c.Interior.ColorIndex = 3 Then
myFlg = True
Exit For
End If
Next c
If myFlg = True Then
Worksheets(k).Tab.ColorIndex = 3
End If
myFlg = False
Next k
End Sub

※ Sheet見出しの色は「赤」としています。
※ 条件付き書式での色には対応できないと思います。
もし、条件付き書式で「赤」の塗りつぶしでも対応したい場合は
当然コードが変わってきます。m(_ _)m
この回答への補足あり
    • good
    • 0

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