人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

Excelのマクロについての質問です。
初歩的な質問で、あまりポイントを多く付与できませんが急ぎの質問なので是非ご回答ください。
今、一つのブックに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 型が一致しませんと出ます。
これを解消する方法を教えてください。
よろしくお願いします。

●質問者: しゅうすけ
●カテゴリ:コンピュータ
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● a-kuma3
●150ポイント

こんな感じで、どうでしょう。

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 は邪魔くさいと思うので外しましたが、必要ならつけてください。
元の色に戻すロジックが無かったので、足してみました。


2 ● snow0214
●350ポイント ベストアンサー

まず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.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ