初歩的な質問で、あまりポイントを多く付与できませんが急ぎの質問なので是非ご回答ください。
今、一つのブックに1~31(日付)のシートがあり、I1:I3(セルが連結されているのでこう表記していますが実際にはI1で良いのでしょうか?それも併せて知りたいです。)に
=VALUE("h"&C1&"/"&E1&"/"&G1)
という数式が入力されています。
これは、年(C1)月(E1)日(G1)から曜日を生成する式なのですが、この結果が土日の時に、シートの見出しの色を変えるため、以下のようなマクロを参考にしました。
Option Explicit
Sub Change_SheetTabColor()
'シートタブの色を、セルD3の値が土曜日なら青色に、日曜日・祝日なら赤色にするマクロ
Dim ws As Worksheet
For Each ws In Worksheets
ws.Select
If Range("I1:I3").Value = "日" Then
Sheets(ws.Name).Tab.ColorIndex = 3
ElseIf Range("I1:I3").Value = "土" Then
Sheets(ws.Name).Tab.ColorIndex = 5
End If
Next ws
End Sub
これを実行すると実行時エラー13 型が一致しませんと出ます。
これを解消する方法を教えてください。
よろしくお願いします。
まずI1に代入式は次のようにしてください。
=TEXT(C1 & "/" & E1 & "/" & G1,"aaa")
次にマクロは次のようにしてください。
セル結合したところは、"I1:I3" ではなくて "I1:I1" でないと参照できません。
Option Explicit Sub Change_SheetTabColor() 'シートタブの色を、セルD3の値が土曜日なら青色に、日曜日・祝日なら赤色にするマクロ Dim ws As Worksheet For Each ws In Worksheets ws.Select If Range("I1:I1").Value = "日" Then Sheets(ws.Name).Tab.ColorIndex = 3 ElseIf Range("I1:I1").Value = "土" Then Sheets(ws.Name).Tab.ColorIndex = 5 End If Next ws End Sub
こんな感じで、どうでしょう。
Dim ws As Worksheet Dim youbi As String For Each ws In Worksheets youbi = Format(ws.Range("I1").Value, "aaa") If youbi = "日" Then ws.Tab.ColorIndex = 3 ElseIf youbi = "土" Then ws.Tab.ColorIndex = 5 Else ws.Tab.ColorIndex = xlColorIndexNone End If Next ws
ws.Select は邪魔くさいと思うので外しましたが、必要ならつけてください。
元の色に戻すロジックが無かったので、足してみました。
まずI1に代入式は次のようにしてください。
=TEXT(C1 & "/" & E1 & "/" & G1,"aaa")
次にマクロは次のようにしてください。
セル結合したところは、"I1:I3" ではなくて "I1:I1" でないと参照できません。
Option Explicit Sub Change_SheetTabColor() 'シートタブの色を、セルD3の値が土曜日なら青色に、日曜日・祝日なら赤色にするマクロ Dim ws As Worksheet For Each ws In Worksheets ws.Select If Range("I1:I1").Value = "日" Then Sheets(ws.Name).Tab.ColorIndex = 3 ElseIf Range("I1:I1").Value = "土" Then Sheets(ws.Name).Tab.ColorIndex = 5 End If Next ws End Sub
コメント(0件)