|
▼takumama さん:
こんにちは
>条件式書式に複数条件(同選択cellに対して最大値と最小値の違う色で色彩する)をできるように挑戦中です「(^^; )
>単純にSub set_conditionをmax用とmin用とで2つ作り、
> Call set_condition_max(Range("b7:b17"), 15, Range("b7:b17"), 8)
> Call set_condition_min(Range("b7:b17"), 15, Range("b7:b17"), 6)
>とでいけるかとおもったのですが,うまくいきません。
>どうやら、後で書いたものが上書き処理されている感じです。。。
>
>また、Sub set_conditionをひとつにして変数名を変更してmax用とmin用でわけてみたのですが、やはり結果は後のものがかぶってしまっている感じです。。
>
>.FormatConditions.Delete がいけないのかと思い、二度目の処理ではコメントにして実行してみたのですがやはりうまくいきません(+_+)
>
>何度も甘えてご質問ばかり申し訳ありませんが、よろしければご教授くださいませ。。。
これね、マクロの記録で条件付書式の操作を行ってみると簡単にコード例を作ってくれるのでそれを修正すると良いと思いますよ。
私は、コードの内容より、インターフェースに悩んでしまいました。
とりあえず、コピーしときますが、
'==============================================================
Sub セルに色()
Dim rng As Range
On Error Resume Next
Cells.FormatConditions.Delete
Set rng = Application.InputBox("最大値・最小値の検査対象セル範囲を指定してチョ", , Selection.Address, , , , , Type:=8)
If Err.Number = 0 Then
Call set_condition(rng, Array(8, 6), 2)
End If
On Error GoTo 0
End Sub
'======================================================================
Sub set_condition(rng As Range, clidx, Optional c_type As Long = 0)
' 機能 : 指定されたセル範囲で最大値、最小値のセルに指定された色を設定する
' INPUT: rng - 設定するセル範囲
' clidx- カラーインデックス 配列形式で指定する
' 最大値 1 最小値 5 のとき array(1,5)
' ひとつのカラーインデックスのみの指定の場合も配列にする事(array(5)のように)
' c_type 設定のタイプ 0-最大値のみ(規定値)
' 1-最小値のみ
' 2-最大値・最小値の両方
' そのた -設定削除(偶然)
Dim obj_idx As Long
obj_idx = 1
With rng
.FormatConditions.Delete
If c_type = 0 Or c_type = 2 Then
.FormatConditions.Add Type:=xlCellValue, Operator:=xlEqual, _
Formula1:="=MAX(" & .Address & ")"
.FormatConditions(obj_idx).Interior.ColorIndex = clidx(LBound(clidx))
obj_idx = obj_idx + 1
End If
If c_type = 1 Or c_type = 2 Then
.FormatConditions.Add Type:=xlCellValue, Operator:=xlEqual, _
Formula1:="=min(" & .Address & ")"
.FormatConditions(obj_idx).Interior.ColorIndex = clidx(UBound(clidx))
obj_idx = obj_idx + 1
End If
End With
End Sub
確認してみて下さい
|
|