ここから本文です

A38,B38...H38のセルにTRUE,FALSEが入るようになっています。(A1,B1...H1の値が自...

ryu********さん

2010/8/2112:30:54

A38,B38...H38のセルにTRUE,FALSEが入るようになっています。(A1,B1...H1の値が自動で更新され それの結果によりTRUEもしくはFALSEが入る)A38~H38のセルで TRUEになったらそれぞれに該当するセルが

33番の色に変化するようにしているのですが EXCELを立ち上げたときにデバックになってしまいます。どのように変えればよろしいでしょうか?よろしくお願いします。


Private Sub Worksheet_Calculate()
If Cells(38, 1).Value = "True" Then
Range("A3:E17").Interior.ColorIndex = 33
End If
If Cells(38, 2).Value = "True" Then
Range("F3:J17").Interior.ColorIndex = 33
End If
If Cells(38, 3).Value = "True" Then
Range("K3:O17").Interior.ColorIndex = 33
End If
If Cells(38, 4).Value = "True" Then
Range("P3:T17").Interior.ColorIndex = 33
End If
If Cells(38, 5).Value = "True" Then
Range("A20:E34").Interior.ColorIndex = 33
End If
If Cells(38, 6).Value = "True" Then
Range("F20:J34").Interior.ColorIndex = 33
End If
If Cells(38, 7).Value = "True" Then
Range("K20:O34").Interior.ColorIndex = 33
End If
If Cells(38, 8).Value = "True" Then
Range("P20:T34").Interior.ColorIndex = 33
End If
End Sub

閲覧数:
280
回答数:
1
お礼:
25枚

違反報告

ベストアンサーに選ばれた回答

エコじいさん

2010/8/2120:19:39

記述にデバック(エラー?)になる要素はないと思います
が、コード内にFLASEの場合の記述がないので、それをいれれば

Private Sub Worksheet_Calculate()
Range("A3:T17", "A20:T34").Interior.ColorIndex = 0
For i = 1 To 8
If Cells(38, i) Then
Cells(3 - (i > 4) * 17, i * 5 - 4 + (i > 4) * 20).Resize(15, 5).Interior.ColorIndex = 33
End If
Next
End Sub

でもCalculateイベントだと範囲外の変更による再計算にも反応してしまうので、Changeイベントのほうがいいかも

Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, Range("A1:H1")) Is Nothing Then Exit Sub
Dim myArea As Range, c
For Each c In Intersect(Target, Range("A1:H1"))
Set myArea = Cells(3 - (c.Column > 4) * 17, c.Column * 5 - 4 + (c.Column > 4) * 20).Resize(15, 5)
If c.Offset(37).Value Then
myArea.Interior.ColorIndex = 33
Else
myArea.Interior.ColorIndex = 0
End If
Next
Set myArea = Nothing
End Sub

また、わざわざA38:H38をフラッグ利用しなくても、その判定式をコード内に組み込めばA38:H38は不要では?

質問した人からのコメント

2010/8/22 09:09:09

降参 出来ました。ありがとうございます。

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる