在Excel VBA中使用“适用于”范围复制条件格式

情景:我有一个现有的工作簿与所有工作表应用相同的条件格式(CF)。 例如,将CF应用于less数列(减去标题行),“适用于:”范围设置为= $ A $ 2:$ I $ 1048576。 该工作簿已经填满了大约30张的数据。

问题:我需要在工作簿中更新所有的CF。 为此,我将第一张纸上的CF更新为新的CF. 然后,我写了一个简单的VBAmacros,将更新后的CF应用到所有其他工作表,以便不必逐页更新每个工作表上的所有CF。 我的代码很好,只有一个例外。 它不复制条件格式的“适用于:”字段。

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

我已经彻底search,找不到解决这个问题。

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

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在下面的回复,我能够解决我遇到的Conditional Formatting范围问题。 对于那些有类似问题的人,下面是我修改后的代码,在整个工作簿中复制和应用从一个表格到另一个表格的格式。

 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 

最好的祝福。

当你创build(或在你的情况下复制)CF规则时,“适用于”范围由select设置。 所以,如果你想'适用于'来引用范围= $ A $ 2:$ I $ 1048576那么你将需要在应用条件格式之前在每个表中select整个范围。

这就是说,将CF应用于整个列似乎对我来说过分了。 最好将每个表单上的每个数据区域更改为Excel表格(也称为ListObject),因为这些表格随着您的数据一起增长和缩小,所以应用了任何条件格式。