场景:我有一个现有的工作簿,其中相同的条件格式(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
最好的问候。