大体でIT

-ちょっと使えるネタを紹介-

大体でIT

Excel VBAで、条件付き書式の背景色や文字色を取得する方法について、ご紹介します。条件付き書式の背景色や文字色は、「DisplayFormat」を使うと取得することができます。DisplayFormatを使うと、条件付き書式の背景色や文字色のコピーもできますので便利です。

はじめに

この記事では、条件付き書式の、背景色や文字色を取得する方法について、ご紹介します。

条件付き書式の、背景色や文字色の書式を取得するには、「DisplayFormat」を使います。

「DisplayFormat」を使えば、表示されている背景色や文字色をコピーすることもできます。

条件付き書式が残ったまま別のシートに貼り付けると、条件式がめちゃめちゃになって思わぬミスがでることがあります。

なので、条件付き書式が設定されたセルの書式をコピーする場合は、背景色や文字色だけをコピーした方がいいです。

では、条件付き書式の背景色や文字色を取得する方法について、解説していきます。

この記事を読むメリット

  • 条件付き書式の背景色や文字色を取得する方法や、コピーする方法がわかります。

目次から見たい項目へ移動すると便利ですよ。

目次

VBAで条件付き書式の色を取得

VBAで、条件付き書式の、背景色と文字色を取得する方法について、ご紹介します。

「DisplayFormat」を使う

条件付き書式の、背景色や文字色を取得するには、「DisplayFormat」を使います。

「DisplayFormat」を使うと、表示されている背景色や文字色などの書式を、取得することができます。

条件付き書式は、条件を満足した場合とそうでない場合で、書式が変わります。

なので、条件付き書式の書式設定を「FormatConditions」で取得する方法は、使えないです。

条件付き書式の「背景色」を取得

条件付き書式の「背景色」を取得してみます。

条件付き書式の「背景色」を取得するVBAコードは、こんな感じです。

Sub TEST1()
    
    '表示されている背景色を取得
    Debug.Print Range("A1").DisplayFormat.Interior.ColorIndex
    
End Sub

セルA1に条件付き書式を設定しておきました。

条件付き書式を設定

セルA1に条件付き書式を設定しておく

条件として、「5以上」の場合としています。

条件を満足していて、背景色は、「黄色」となっています。

では、VBAコードを実行します。

条件付き書式の背景色を取得

条件付き書式の背景色を取得した結果

背景色「6」番を取得できました。

「6」番は、黄色ですので、正しく背景色を取得できていることがわかります。

Interior.ColorIndexだけでは取得できない

ちなみに、「DisplayFormat」を使わないで「Interior.ColorIndex」だけでは、条件付き書式の背景色は取得できません。

やってみます。

Sub TEST2()
    
    '背景色を取得→取得できない
    Debug.Print Range("A1").Interior.ColorIndex
    
End Sub

先ほど使った、条件付き書式の設定で試してみます。

セルA1に条件付き書式を設定

では、実行します。

DisplayFormatを使わないで条件付き書式の背景色色を取得した結果

結果は、「-4142」番となりました。

「-4142」番は、「背景色なし」なので、条件付き書式の設定である「黄色」と違う結果となりました。

条件付き書式の「文字色」を取得

条件付き書式の「文字色」を取得してみます。

条件付き書式の「文字色」を取得するVBAコードは、こんな感じです。

Sub TEST3()
    
    '表示されている文字色を取得
    Debug.Print Range("A1").DisplayFormat.Font.ColorIndex
        
End Sub

セルA1に条件付き書式を設定しておきました。

条件付き書式を設定しておく

セルA1に条件付き書式を設定しておく

条件として、「5以上」の場合としています。

条件を満足していて、文字色は、「赤色」となっています。

では、VBAコードを実行します。

条件付き書式の文字色を取得

条件付き書式の文字色を取得した結果

文字色「3」番を取得できました。

「3」番は、赤色ですので、正しく文字色を取得できていることがわかります。

Font.ColorIndexだけでは取得できない

ちなみに、「DisplayFormat」を使わないで「Font.ColorIndex」だけでは、条件付き書式の文字色は取得できません。

やってみます。

Sub TEST4()
    
    '文字色を取得→取得できない
    Debug.Print Range("A1").Font.ColorIndex
    
End Sub

先ほど使った、条件付き書式の設定で試してみます。

セルA1に条件付き書式を設定

では、実行します。

DisplayFormatを使わないで条件付き書式の文字色を取得した結果

結果は、「1」番となりました。

「1」番は、「黒色」なので、条件付き書式の設定である「赤色」と違う結果となりました。

VBAで条件付き書式の色をコピー

VBAで、条件付き書式の背景色や文字色を、コピーする方法について、ご紹介します。

条件付き書式の背景色や文字色などの書式は、簡単にコピーすることができないので、少々手間がかかります。

条件付き書式の色のみのコピーができない

条件付き書式で設定した、背景色や文字色などの書式は、コピーすることができません。

正確には、条件付き書式はコピーせず、背景色や文字色だけをコピーすることができない、ということになります。

エクセルの機能でコピーしてみます。

セルA1をコピーする

セルA1をコピーする

「値と元の書式」を選択して、貼り付けてみます。

「値と元の書式」で貼り付け

値と元の書式を選択して貼り付け

貼り付けできました。

背景色と文字色は貼り付けられています。

条件付き書式を確認してみます。

条件付き書式もコピーされる

条件付き書式を確認

条件付き書式は、そのまま残っちゃってます。

条件付き書式が残っちゃうと、思わぬエラーとなったりするので、条件付き書式は消したいです。

次で、DisplayFormatを使って、条件付き書式の背景色と文字色だけをコピーする方法を、ご紹介します。

DisplayFormatを使って背景色と文字色をコピー

DisplayFormatを使って、条件付き書式の背景色と文字色だけを、コピーする方法について、解説します。

条件付き書式の「背景色」のみコピー

まず、条件付き書式の背景色だけを、コピーしてみます。

Sub TEST5()
    
    '表示されている背景色を取得
    a = Range("A1").DisplayFormat.Interior.ColorIndex
    
    '背景色を設定
    Range("A1").Offset(2, 0).Interior.ColorIndex = a
    
End Sub

手順は、

  • 表示されている背景色を取得
  • 背景色を設定

という流れです。

セルA1に、条件付き書式を設定しておきました。

セルA1に条件付き書式を設定

条件付き書式を設定したセルA1の、「背景色」だけを、セルA3にコピーします。

条件付き書式の「背景色」だけをコピーした結果

条件付き書式の「背景色」だけをコピーすることができました。

もちろん、条件付き書式は、設定されていません。

条件付き書式の「文字色」のみコピー

次は、条件付き書式の文字色だけを、コピーしてみます。

Sub TEST6()
    
    '表示されている文字色を取得
    a = Range("A1").DisplayFormat.Font.ColorIndex
    
    '文字色を設定
    Range("A1").Offset(2, 0).Font.ColorIndex = a
    
End Sub

手順は、

  • 表示されている文字色を取得
  • 文字色を設定

という流れです。

セルA1に、条件付き書式を設定しておきました。

セルA1に条件付き書式を設定

条件付き書式を設定したセルA1の、「文字色」だけを、セルA3にコピーします。

条件付き書式の「文字色」だけをコピーした結果

条件付き書式の「文字色」だけをコピーすることができました。

もちろん、条件付き書式は、設定されていません。

条件付き書式の「背景色」と「文字色」をコピー

次は、条件付き書式の背景色と文字色を、コピーしてみます。

Sub TEST7()
    
    '表示されている書式を取得
    a = Range("A1").DisplayFormat.Interior.ColorIndex '背景色
    b = Range("A1").DisplayFormat.Font.ColorIndex '文字色
    
    '書式を設定
    Range("A1").Offset(2, 0).Interior.ColorIndex = a '背景色
    Range("A1").Offset(2, 0).Font.ColorIndex = b '文字色
    
End Sub

手順は、

  • 表示されている背景色と文字色を取得
  • 背景色と文字色を設定

という流れです。

セルA1に、条件付き書式を設定しておきました。

セルA1に条件付き書式を設定

条件付き書式を設定したセルA1の、「背景色」と「文字色」を、セルA3にコピーします。

条件付き書式の「背景色」と「文字色」をコピーした結果

条件付き書式のは「背景色」と「文字色」をコピーすることができました。

もちろん、条件付き書式は、設定されていません。

こんな感じで、「DisplayFormat」を使うと、条件付き書式で表示された、背景色や文字色のみをコピーすることができます。

複数のセル範囲で背景色と文字色をコピー

次は、複数のセル範囲から、背景色と文字色をコピーしてみます。

VBAコードは、こんな感じです。

Sub TEST8()
    
    Dim Rg
    
    'セル範囲をループ
    For Each Rg In Range("A1:C4")
        '表示されている書式を取得
        a = Rg.DisplayFormat.Interior.ColorIndex '背景色
        b = Rg.DisplayFormat.Font.ColorIndex '文字色
        
        '書式を設定
        Rg.Offset(7, 0).Interior.ColorIndex = a '背景色
        Rg.Offset(7, 0).Font.ColorIndex = b '文字色
    Next
    
End Sub

先ほどのコードを、「For Each」でループしています。

セルA1~C4の範囲に、条件付き書式を設定しておきました。

複数のセルに条件付き書式を設定

複数のセル範囲に条件付き書式を設定しておく

では、背景色と文字色のみを、コピーしてみます。

背景色と文字色のみをコピー

背景色と文字色のみをコピーした結果

背景色と文字色のみをコピーできました。

条件付き書式は、コピーされていません。

裏技

最後に裏技になります。

条件付き書式の、背景色や文字色だけをコピーすることは、できないと言ってきました。

実は、クリップボードを使うと、背景色や文字色だけをコピーすることができます。

実はクリップボードを使うとできる

条件付き書式の、背景色や文字色だけのコピーを、クリップボードを使ってやってみます。

クリップボードを使って貼り付け

条件付き書式を設定した、セルを用意しました。

条件付き書式を設定したセルを用意

「ホーム」タブから「クリップボード」をクリックして、クリップボードを表示させます。

クリップボードを表示させる

条件付き書式が設定されている、セル範囲を選択して、コピーします。

条件付き書式のセル範囲をコピーする

コピーするとクリップボードに値がコピーされます。

別のセルを選択して、クリップボードをクリックして、貼り付けます。

クリップボードから貼り付ける

クリップボードから値が貼り付けられました。

クリップボードから値が貼り付けられる

条件付き書式が、コピーされているかを確認します。

条件付き書式はコピーされていない

条件付き書式がコピーされていない

なんと、条件付き書式は、設定されていません。

つまり、クリップボードを表示して、アイテムをクリックして貼り付けると、「条件付き書式」だけが消えてくれます。

バグなので何なのか知らないけれども、これは使えるかもです。

VBAでは裏技は使えない

ちなみに、先ほどのクリップボードを使う方法は、VBAでは使えません。

マクロの記録で、記録させても、「Activesheet.Paste」だけが保存される結果となります。

もちろんこの記録したVBAコードを実行しても、条件付き書式は通常通りコピーされてしまいます。

なので、VBAで、自動化する場合は、「DisplayFormat」を使うことになります。

おわりに

この記事では、条件付き書式の、背景色や文字色を取得する方法について、ご紹介しました。

条件付き書式の、背景色や文字色の書式を取得するには、「DisplayFormat」を使います。

「DisplayFormat」を使えば、表示されている現在の、背景色や文字色をコピーすることもできます。

条件付き書式が残ったまま別のシートに貼り付けると、条件式がめちゃめちゃになって思わぬミスがでることがあります。

なので、条件付き書式が設定されたセルの書式をコピーする場合は、背景色や文字色だけをコピーした方がいいです。

参考になればと思います。最後までご覧くださいまして、ありがとうございました。

関連する記事から探す

カテゴリから探す

カテゴリから見たい項目を探すと便利ですよ。

サイト内を検索する

↓キーワードを入力する

アーカイブから探す