簡體   English   中英

僅復制條件格式

[英]Copy only conditional formatting

我正在為一些看起來相當簡單的事情而苦苦掙扎。 我想復制條件格式的單元格的另一個規則。 我在這里搜索過類似的問題:

1) 將格式條件從一個單元格復制到另一個單元格?

和其他地方:

1) https://www.ozgrid.com/forum/forum/help-forums/excel-general/9956-solved-macro-to-copy-conditional-formatting

2) https://www.mrexcel.com/forum/excel-questions/369089-vba-copy-conditional-formatting.html

...但大多數答案往往只是說使用.PasteSpecial xlPasteFormats ,10 次中有 9 次可以完成這項工作,但並不是我想要做的事情的真正答案(請參閱用戶對 SO 問題的評論:“這也不僅僅是復制條件格式,但我可以處理它”)。

我試圖從一個單元格中獲取條件格式規則,並將它們應用於另一個格式不同的單元格作為標准。 .PasteSpecial枚舉的這組示例來看,沒有一個可以完成確切的工作 - xlPasteAllMergingConditionalFormats看起來很接近,但我實際上並不想將任何內容從一個單元格粘貼到另一個單元格。

嘗試了一些無望的猜測,例如:

For Each cond In rng1.FormatConditions rng2.FormatConditions.Add (cond) Next cond

但我知道它需要的遠不止這些......任何幫助表示贊賞!

這是一個有點廉價的技巧(又名“The Swap”),但它應該有效。 假設您只關心以下屬性:

  • 字體名稱
  • 字體大小
  • 內飾.顏色

因此,在復制單元格之前,您可以簡單地記住“hiddenRange”中的屬性。 因此,你可以簡單地復制copyRangehiddenRange ,然后復制copyRangepasteRangexlPasteAllMerginingConditionalFormats ,然后回憶的正確的屬性pasteRangehiddenRange

看到比解釋好一點:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM