Excel VBA

【Excel VBA】【マクロ】【Tips】条件付き書式の書式のみ残す方法

こんにちは!Lenocoです。本日も見てくださりありがとうございます。

今回は条件付き書式の書式のみ残す方法を学びましょう!

条件付き書式の書式のみ残す方法

条件付き書式ってとても便利ですけど、場合によっては非常に使いづらいことないでしょうか。
この書式(セル色や文字色)だけ残して、条件付き書式は削除できたらいいのに・・
と思ったことがある人もいるでしょう。。

マクロを使わない方法と、マクロを使う方法と、2種類ご紹介しますね!
これは知っておくと便利!!!
以下のような表を使います。

D列の「個数」に条件付き書式が設定されています。
個数が25以上なら青字太字、個数が10未満なら赤色塗りつぶしを設定しています。

方法①コピーして「クリップボード」から貼り付け

該当範囲をコピーします(今回だとB2セルからE9セル)。

新規シートを開き、左上の「クリップボード」の右側マークをクリックし、
先ほどコピーしたアイテムをクリックします。

「条件付き書式」から「このワークシート」に設定されている条件付き書式を確認し、なにも表示されなければOKです。

条件付き書式はコピーされず、書式のみコピーされました。

方法②マクロで対応

Sub Main()
    Dim rng As Range
    '条件付き書式が設定されているところは書式のみ残し条件付き書式を削除
    For Each rng In ActiveSheet.UsedRange.Cells
        ' DisplayFomatとFormatを比較して異なっていたらDisplayFomatの色に合わせる
        '文字色
        If rng.DisplayFormat.Font.Color <> rng.Font.Color Then
            rng.Font.Color = rng.DisplayFormat.Font.Color
        End If
        '太字
        If rng.DisplayFormat.Font.Bold <> rng.Font.Bold Then
            rng.Font.Bold = rng.DisplayFormat.Font.Bold
        End If
        '背景色
         If rng.DisplayFormat.Interior.Color <> rng.Interior.Color Then
            rng.Interior.Color = rng.DisplayFormat.Interior.Color
        End If
    Next
    ActiveSheet.UsedRange.FormatConditions.Delete        '条件付き書式を削除
End Sub

コードの説明

まず軽く説明しますね。UsedRangeでそのシートのデータがある全てのセル範囲を取得し、その範囲をすべて1セルずつ見ていき、条件付き書式で設定されているセルがあったら、その書式を実際の書式として設定する、という動きになっています。
そして最後にそのシートの条件付き書式をすべて削除、という流れになります。
では、詳しくコードを見ていきます。
Range型でrngという変数を作成します。
Forで、そのシートで使用されている範囲のすべてのセルをループします。
変数rngは、1つ1つのセルを入れる入れ物として使います。
ここからはすべてやっていることは同じなのですが、
条件付き書式で設定した書式と、実際の書式が一致しているかどうかを確認します。
一致していなかったら実際の書式に、条件付き書式で設定した書式を上書きします。
それを、文字色、太字、背景色で比較し、行っています。
ちなみに太字は「rng.Font.Bold」でTrueを設定することで太字になります。
使用している全セルを確認・設定したあとはForを抜け、
使用しているセル範囲の条件付き書式をすべて削除します。

こちらも、マクロ実行後に「条件付き書式」から「このワークシート」に設定されている条件付き書式を確認し、なにも表示されないことを確認してみてください。

さいごに

ちなみに、①の方法で「マクロの記録」をしてみましたが、一応コードは保存されるのですが、これをまねてもうまくいきませんでした。
②のマクロで、使用しているセル範囲が多い場合は、Application.ScreenUpdatingなどを使用し、
処理が遅くならないよう工夫してみてください。

【Excel VBA】【マクロ】【Tips】速度を上げるために最初と最後に入れたほうがよい処理こんにちは!Lenocoです。本日も見てくださりありがとうございます。 今回は処理速度についてのTips回です!!! 速度を上げるために...
【Excel VBA】【マクロ】【Tips】条件付き書式のセル色を取得するマクロこんにちは!Lenocoです。本日も見てくださりありがとうございます。 今回は条件付き書式で設定されたセルの色を取得するマクロです! ...

Lenoco

COMMENT

メールアドレスが公開されることはありません。 が付いている欄は必須項目です