使用"复制条件格式适用于" Excel VBA中的范围

时间:2017-10-30 17:13:32

标签: excel excel-vba conditional-formatting vba

场景:我有一个现有的工作簿,其中相同的条件格式(CF)应用于所有工作表。 CF应用于几列(减去标题行),使用"适用于:"范围设置为= $ A $ 2:$ I $ 1048576,例如。工作簿已经填充了大约30页的数据。

问题:我需要更新整个工作簿中的所有CF.为此,我将第一张表格中的CF更新为新CF.然后我写了一个简单的VBA宏来将更新的CF应用到所有其他工作表,以便不逐页更新每张工作表上的所有CF.我的代码效果很好,但有一个例外。它不会复制"适用于:"条件格式的字段。

我只复制第一行数据的格式,因为每个工作表都有不同数量的数据行。每张纸上最后一行数据的下方是CF键(向用户显示CF生成的行颜色的含义)。

我已经彻底搜索过,无法找到解决此问题的方法。

以下是我的代码。我该如何解决它来解决这个问题?

Sub CondFormatting()
'
' CondFormatting Macro
'

    Dim WS_Count As Integer
    Dim i As Integer

    WS_Count = ActiveWorkbook.Worksheets.Count

    Sheets(1).Range("A2:I2").Copy

    For i = 2 To WS_Count
        Sheets(i).Cells.FormatConditions.Delete
        Sheets(i).Range("A2:I2").PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
            SkipBlanks:=False, Transpose:=False
    Next i

    Application.CutCopyMode = False
End Sub

感谢。

** 更新 **

感谢Jeffery在下面的回复,我能够解决我遇到的条件格式范围问题。对于那些有类似问题的人,下面是我修改过的代码,它在整个WorkBook中复制并将格式从一个表应用到另一个表。

Sub CondFormatting()
'
' CondFormatting Macro
'

    Dim WS_Count As Integer
    Dim i As Integer

    WS_Count = ActiveWorkbook.Worksheets.Count

    Sheets(1).Range("A2").ListObject.DataBodyRange.Copy

    For i = 2 To WS_Count
        Sheets(i).Cells.FormatConditions.Delete
        Sheets(i).Range("A2").ListObject.DataBodyRange.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
            SkipBlanks:=False, Transpose:=False
    Next i

    Application.CutCopyMode = False

End Sub

最好的问候。

0 个答案:

没有答案