仅复制条件格式
Copy only conditional formatting
我正在努力解决看似相当简单的问题。我正在尝试将 just 一个单元格的条件格式规则复制到另一个单元格。我在这里搜索过类似的问题:
1) Copy Format Conditions from one cell to another?
和其他地方:
2) https://www.mrexcel.com/forum/excel-questions/369089-vba-copy-conditional-formatting.html
...但大多数答案往往只是说使用 .PasteSpecial xlPasteFormats
,10 次中有 9 次可以完成这项工作,但并不是我正在尝试做的事情的真实答案(请参阅评论来自用户的 SO 问题:"This also copies more than just the conditional formatting but I can deal with it").
我正在尝试从一个单元格中获取条件格式设置规则,并将它们应用于另一个格式与标准格式不同的单元格。从这组 .PasteSpecial
枚举的示例来看,没有一个可以完成确切的工作 - xlPasteAllMergingConditionalFormats
看起来很接近,但我实际上不想将任何内容从一个单元格粘贴到另一个单元格。
尝试了一些无望的猜测,例如:
For Each cond In rng1.FormatConditions
rng2.FormatConditions.Add (cond)
Next cond
但我知道它需要的不止于此...感谢任何帮助!
这是一个有点廉价的技巧 (a.k.a。"The Swap"),但它应该有效。假设您只关心以下属性:
- Font.Name
- Font.Size
- Interior.Color
因此,在复制单元格之前,您可以简单地记住"hiddenRange"中的属性。因此,您可以简单地将 copyRange
复制到 hiddenRange
,然后使用 xlPasteAllMerginingConditionalFormats
将 copyRange
复制到 pasteRange
,然后调用 pasteRange
来自 hiddenRange
。
看到比解释好一点:
Option Explicit
Sub TestMe()
Dim hiddenRange As Range
Dim copyRange As Range
Dim pasteRange As Range
Set hiddenRange = Range("A1")
Set copyRange = Range("B2")
Set pasteRange = Range("B3")
pasteRange.Copy hiddenRange
copyRange.Copy
pasteRange.PasteSpecial Paste:=xlPasteAllMergingConditionalFormats
With pasteRange
.Font.Name = hiddenRange.Font.Name
.Font.Size = hiddenRange.Font.Size
.Interior.Color = hiddenRange.Interior.Color
End With
hiddenRange.Clear
Application.CutCopyMode = False
End Sub
我正在努力解决看似相当简单的问题。我正在尝试将 just 一个单元格的条件格式规则复制到另一个单元格。我在这里搜索过类似的问题:
1) Copy Format Conditions from one cell to another?
和其他地方:
2) https://www.mrexcel.com/forum/excel-questions/369089-vba-copy-conditional-formatting.html
...但大多数答案往往只是说使用 .PasteSpecial xlPasteFormats
,10 次中有 9 次可以完成这项工作,但并不是我正在尝试做的事情的真实答案(请参阅评论来自用户的 SO 问题:"This also copies more than just the conditional formatting but I can deal with it").
我正在尝试从一个单元格中获取条件格式设置规则,并将它们应用于另一个格式与标准格式不同的单元格。从这组 .PasteSpecial
枚举的示例来看,没有一个可以完成确切的工作 - xlPasteAllMergingConditionalFormats
看起来很接近,但我实际上不想将任何内容从一个单元格粘贴到另一个单元格。
尝试了一些无望的猜测,例如:
For Each cond In rng1.FormatConditions
rng2.FormatConditions.Add (cond)
Next cond
但我知道它需要的不止于此...感谢任何帮助!
这是一个有点廉价的技巧 (a.k.a。"The Swap"),但它应该有效。假设您只关心以下属性:
- Font.Name
- Font.Size
- Interior.Color
因此,在复制单元格之前,您可以简单地记住"hiddenRange"中的属性。因此,您可以简单地将 copyRange
复制到 hiddenRange
,然后使用 xlPasteAllMerginingConditionalFormats
将 copyRange
复制到 pasteRange
,然后调用 pasteRange
来自 hiddenRange
。
看到比解释好一点:
Option Explicit
Sub TestMe()
Dim hiddenRange As Range
Dim copyRange As Range
Dim pasteRange As Range
Set hiddenRange = Range("A1")
Set copyRange = Range("B2")
Set pasteRange = Range("B3")
pasteRange.Copy hiddenRange
copyRange.Copy
pasteRange.PasteSpecial Paste:=xlPasteAllMergingConditionalFormats
With pasteRange
.Font.Name = hiddenRange.Font.Name
.Font.Size = hiddenRange.Font.Size
.Interior.Color = hiddenRange.Interior.Color
End With
hiddenRange.Clear
Application.CutCopyMode = False
End Sub