Excel (VBA)

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

 
(Windows 10全般 : Microsoft 365)
条件付き書式を解除した後に背景色だけ残したい
投稿日時: 22/05/25 11:41:08
投稿者: ip8bk

条件付き書式を解除した後に、背景色を残したいのですが、下記の手順でうまくいかないので、お力を貸してください。
現象としましては、コードを実行しても背景色がつきませんが、手動でクリップボードの「すべて貼り付け」をクリックすると背景色が付きます。
簡易コードを作成しましたので、ご指摘いただけますと助かります。(m__m)
 
1. 対象のセル(C4)をコピーする。
2. 条件付き書式を解除する。
3. 対象セル(C4)に貼り付ける。
 

Sub Macro18()
    Range("C4").Select
    Selection = 1
    Selection.Interior.Pattern = xlNone
    Cells.FormatConditions.Delete
    Selection.FormatConditions.Add Type:=xlExpression, Formula1:="=C4<>"""""
    Selection.FormatConditions(1).Interior.Color = 192
    Selection.FormatConditions(1).StopIfTrue = False
    Selection.Copy
    Selection.FormatConditions.Delete
    ActiveSheet.Paste Link:=False
    Application.CutCopyMode = False
End Sub

回答
投稿日時: 22/05/25 12:09:54
投稿者: Suzu

引用:
手動でクリップボードの「すべて貼り付け」をクリックすると背景色が付きます。

 
手元、Excel 2019 ですが、再現できません。
 
背景色 なし 条件付き書式で色をつけているセルをコピーしても
背景色としてコピーされているのではないので、背景色としては色はつかないです。
 
すべて 張り付けたのであれば、「値」「条件付き書式」どちらも貼り付けられるので
それが、色が付いたように見えるだけだと思います。
 
確認してみてください。
 
 
VBAで良いなら、
FormatCondition の Formula1 と、Interior.Color を読み取って 設定しては?

投稿日時: 22/05/25 12:45:08
投稿者: ip8bk

ご回答ありがとうございます。
実はセルをグラデーションで装飾することが目的です。
条件付き書式だと簡単にできそうだったので試していますが、おすすめの方法ありまでしょうか?
 
例えば、A1からA10までを白から赤いグラデーション化するなどです。

回答
投稿日時: 22/05/25 13:12:30
投稿者: simple

・DisplayFormatプロパティを使って、条件付き書式による色を求め、
・それを.Interior.Colorにセットします。
・そのあとで条件付き書式を削除する
という手順でやれば色が残りませんか?

回答
投稿日時: 22/05/25 13:19:47
投稿者: Suzu

引用:
実はセルをグラデーションで装飾することが目的です。
条件付き書式だと簡単にできそうだったので試していますが、おすすめの方法ありまでしょうか?
  
例えば、A1からA10までを白から赤いグラデーション化するなどです。

 
それでですか。
2色スケールを使うのですね。
 
色を自由に決めたいなら、
simple さんの仰る様に、DisplayFormat を使います。
 
白から、RGB関数で使用する(赤、緑、青)へのグラデーションであれば
 
Sub サンプル()
 'セルの選択範囲の背景色を
  '1セルづつ白から 赤へグラデーション
  Dim i As Long
  Dim j As Long
  Dim rng As Range
 
  i = Selection.Cells.Count
  If i <= 255 Then
    j = -1
    For Each rng In Selection
      j = j + 1
      rng.Interior.Color = RGB(255, 255 - CInt(255 * j / i), 255 - CInt(255 * j / i))
    Next
  End If
End Sub

投稿日時: 22/05/25 13:44:32
投稿者: ip8bk

ご回答ありがとうございます。
 
お二人からご教示いただいた内容でなんとかなりそうです。
 
結果あらためてご報告させていただきます。

投稿日時: 22/05/27 08:55:52
投稿者: ip8bk

本件、simple様の下記の手順で解決いたしました。
 大変勉強になりました。
ありがとうございました。
  
 

引用:
・DisplayFormatプロパティを使って、条件付き書式による色を求め、
・それを.Interior.Colorにセットします。
・そのあとで条件付き書式を削除する
 という手順でやれば色が残りませんか?

 
  
Sub Macro18()
    Range("C4").Select
    Selection = 1
    Selection.Interior.Pattern = xlNone
    Cells.FormatConditions.Delete
    Selection.FormatConditions.Add Type:=xlExpression, Formula1:="=C4<>"""""
    Selection.FormatConditions(1).Interior.Color = RGB(192, 192, 0)
    Selection.FormatConditions(1).StopIfTrue = False
    Dim getColorIndex As Variant
    getColor = ActiveCell.DisplayFormat.Interior.Color
    Selection.FormatConditions.Delete
    ActiveCell.Interior.Color = getColor
End Sub