我正在努力寻找看似相当简单的事情。我正在尝试将只是单元格的条件格式设置规则复制到另一个。我在这里搜索过类似的问题:
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
,其中9次中有9次完成工作,但不是我想要做的事情的真实答案(请参阅评论来自用户在SO问题上:"这也复制了不仅仅是条件格式,但我可以处理它")。
我正在尝试从一个单元格中获取条件格式设置规则,并将它们应用于另一个格式不同的单元格作为标准格式。从这组.PasteSpecial
枚举的例子来看,没有一个能够完成确切工作的例子 - xlPasteAllMergingConditionalFormats
看起来很接近,但我实际上并不想粘贴任何东西。细胞到另一个。
尝试了几个无望的猜测:
For Each cond In rng1.FormatConditions
rng2.FormatConditions.Add (cond)
Next cond
但是我知道它需要更多......任何帮助都赞赏!
答案 0 :(得分:1)
这是一个便宜的技巧(a.k.a。“The Swap”),但它应该有效。假设您只关心以下属性:
因此,在复制单元格之前,您可以简单地记住“hiddenRange”中的属性。因此,您只需将copyRange
复制到hiddenRange
,然后使用copyRange
将pasteRange
复制到xlPasteAllMerginingConditionalFormats
,然后重新调用pasteRange
的正确属性来自hiddenRange
的{1}}。
看到它比解释好一点:
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