|
助けてください。 さん、こんばんわ。
>>今手元にXL2007がないのですが、XL2007では条件付書式の条件はいくつまで可能なんでしょうか?
>調べてみると、Excel2007では64件だそうです。
それなら6つくらい余裕ですね。
問題点をみつけました。
areaA1:条件1 areaA2:条件1 areaA3:条件1
Range(areaA1).FormatConditions.Add 問題ないので略
areaA2:条件2 areaA3:条件2
Range(areaA2).FormatConditions.Add 〜
Range(areaA2).FormatConditions(1) 〜
↑今回追加したものはRange(areaA2).FormatConditions(2)
areaA3:条件3
Range(areaA3).FormatConditions.Add 〜
Range(areaA3).FormatConditions(1) 〜
↑今回追加したものはRange(areaA3).FormatConditions(3)
areaA1:条件2 areaA2:条件3 areaA3:条件4
Range(areaA1).FormatConditions.Add 〜
Range(areaA1).FormatConditions(2) 〜
↑今回追加したものはRange(areaA1).FormatConditions(1)
↑今回追加したものはRange(areaA2).FormatConditions(3)
↑今回追加したものはRange(areaA3).FormatConditions(4)
areaA2:条件4 areaA3:条件5
Range(areaA2).FormatConditions.Add 〜
Range(areaA2).FormatConditions(2) 〜
↑今回追加したものはRange(areaA2).FormatConditions(4)
↑今回追加したものはRange(areaA3).FormatConditions(5)
areaA3:条件6
Range(areaA3).FormatConditions.Add 〜
Range(areaA3).FormatConditions(2) 〜
↑今回追加したものはRange(areaA3).FormatConditions(6)
範囲が重複しているので、インデックス値がずれています。
なので、条件式を追加した時にwithでそのまま書式を設定するようにしました。
ついでに配列に入れて整理しました。
Sub Macro9()
'ループさせるために配列で処理
Dim areaA(1 To 3) As String '範囲をあらわす文字列
Dim s1(1 To 3, 1 To 2) '条件式の文字列
Dim II As Long, TP As Long
'内容をセット
areaA(1) = "$H$56:$X$456"
areaA(2) = "$P$56:$X$456"
areaA(3) = "$Q$56:$X$456"
'条件式
s1(1, 1) = "=NOT(EXACT(TRIM($H56),""""))" 'area1 条件1,area2 条件1,area3 条件1
s1(2, 1) = "=NOT(EXACT(TRIM($P56),""""))" 'area2 条件2,area3 条件2
s1(3, 1) = "=NOT(EXACT(TRIM($Q56),""""))" 'area3 条件3
s1(1, 2) = "=EXACT($BB56,0)" 'area1 条件2,area2 条件3,area3 条件4
s1(2, 2) = "=EXACT($BC56,0)" 'area2 条件4,area3 条件5
s1(3, 2) = "=EXACT($AA56,$AA$45)" 'area3 条件6
'条件消去
Cells.FormatConditions.Delete
'
For TP = 1 To 2
For II = 1 To 3
With Range(areaA(II))
.Cells(1).Select
With .FormatConditions.Add(Type:=xlExpression, Formula1:=s1(II, TP))
.StopIfTrue = False
If TP = 1 Then
With .Borders(xlTop)
.Weight = xlThin
.LineStyle = xlContinuous
End With
Else
.Interior.ColorIndex = 16
End If
End With
End With
Next
Next
'
Erase areaA, s1
End Sub
2007がないので.StopIfTrueや4つめ以降の条件は試せていませんが、とりあえず設定はできているようでした。
|
|