Excel (VBA)

Excel VBAに関するフォーラムです。
  • 解決済みのトピックにはコメントできません。
このトピックは解決済みです。
質問

 
条件付き書式の削除と設定
投稿日時: 22/01/14 22:31:42
投稿者: taichi

条件付き書式の削除、設定等はマクロに記録できませんでした。
 
やりたいことは、現在設定されているセル範囲の条件付き書式の削除と、
新たな条件付き書式の設定です。
 
設定したい条件書式は直上のセル値と同じであればフォント・カラーを灰色(適当な数字で)に
設定したいのです。ダイアログでは =$K2=$K1 というような感じです。
設定範囲は実際は最終行まで使用することはありませんが
Bot = Cells.Rows.Count の数値で =$K2:$KBot
のように設定できればと思います。
最終行まで条件付書式を設置してもファイルの容量は増大しなかったのでそれでもいいかなと感じました。
 
例えば Msgbox ActiveCell.Font.Color ---> -6908266 のように事前に知らべて名前を付けて定数化してあります。
 
よろしくお願いいたします。

回答
投稿日時: 22/01/14 23:32:19
投稿者: WinArrow
投稿者のウェブサイトに移動

>条件付き書式の削除、設定等はマクロに記録できませんでした。
 
こちらは、Excel2019の環境ですが、マクロの記憶はできます。
 
↓は、マクロの記録で作成したコードです。
 

    Range("K2:K17").Select
    Selection.FormatConditions.Add Type:=xlCellValue, Operator:=xlEqual, _
        Formula1:="=$K1"
    Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority
    With Selection.FormatConditions(1).Font
        .ThemeColor = xlThemeColorDark1
        .TintAndShade = -0.349986266670736
    End With
    Selection.FormatConditions(1).StopIfTrue = False

 
これに、2行目に↓を挿入します。
    Selection.FormatConditions.Delete

 
 
このコードで、セル範囲を可変に、Selectを使わないようにします。
    With ActiveSheet
        With .Range(.Cells(2, "K"), .Cells(.Rows.Count, "K").End(xlUp))
            .FormatConditions.Delete
            .FormatConditions.Add _
                Type:=xlCellValue, _
                Operator:=xlEqual, _
                Formula1:="=$K1"
            .FormatConditions(Selection.FormatConditions.Count).SetFirstPriority

            With .FormatConditions(1).Font
                .ThemeColor = xlThemeColorDark1
                .TintAndShade = -0.349986266670736
            End With
            .FormatConditions(1).StopIfTrue = False
        End With
    End With

投稿日時: 22/01/15 15:51:54
投稿者: taichi

WinArrow さんいつもお世話になっております。
お陰様で頂いたコードを適当にアレンジしたら、
目的通りの作業が完了いたしました。
 
感謝!感謝!です。