Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


75277 / 76738 ←次へ | 前へ→

【5901】Re:特定の列の最大値Cellに色を塗りたい
回答  ichinose  - 03/6/7(土) 10:51 -

引用なし
パスワード
   ▼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

確認してみて下さい

3 hits

【5870】特定の列の最大値Cellに色を塗りたい takumama 03/6/4(水) 23:00 質問
【5871】Re:特定の列の最大値Cellに色を塗りたい ichinose 03/6/5(木) 2:19 回答
【5873】Re:特定の列の最大値Cellに色を塗りたい takumama 03/6/5(木) 10:20 質問
【5884】Re:特定の列の最大値Cellに色を塗りたい ichinose 03/6/6(金) 0:41 回答
【5885】Re:特定の列の最大値Cellに色を塗りたい takumama 03/6/6(金) 10:25 お礼
【5891】Re:特定の列の最大値Cellに色を塗りたい takumama 03/6/6(金) 17:15 質問
【5901】Re:特定の列の最大値Cellに色を塗りたい ichinose 03/6/7(土) 10:51 回答
【5905】Re:特定の列の最大値Cellに色を塗りたい takumama 03/6/7(土) 14:27 お礼
【5913】Re:特定の列の最大値Cellに色を塗りたい takumama 03/6/7(土) 22:41 お礼

75277 / 76738 ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free