保持条件格式不更改应用范围

我正在使用这段代码来复制/粘贴(通过保持价值和格式化)以-A-B结尾的表单Target Sheet

 Sub Merge_AllSheets_into_One() Dim Sheet As Worksheet Dim TargetRow As Long 'Application.ScreenUpdating = True Sheets("Target Sheet").Range("A3:FN10000").Cells.clear Application.Calculation = xlCalculationManual Application.ScreenUpdating = False TargetRow = 3 For Each Sheet In ActiveWorkbook.Sheets If Sheet.Name Like "*" & strSearch & "-A" Or _ Sheet.Name Like "*" & strSearch & "-B" Then Sheets(Sheet.Name).Range("AA3:GN90").Copy With Worksheets("Target Sheet").Cells(TargetRow, 1) .PasteSpecial Paste:=xlPasteValues .PasteSpecial Paste:=xlPasteFormats End With TargetRow = TargetRow + 88 End If Next Application.CutCopyMode = False End Sub 

复制的数据具有相同的大小,相同的范围跨不同的工作表。
问题是, Target Sheet包含相当数量的条件格式规则,每次合并时都会被更改。
也就是说,每次我将范围合并到Target Sheet ,它都会删除旧数据(这是我想要的,删除或replace旧数据),并将新数据粘贴到另一个数据下。

如何在不更改条件格式应用范围的情况下将数据复制/粘贴(=合并)到Target Sheet

更新

实际上我从不同的纸张复制的范围有相同的范围,每个范围是88行("AA3:GN90") 。 它们包含合并的单元格:合并的单元格是每个范围的前四列:

AA3:AA90
AB3:AB90
AC3:AC90
AD列中合并四行四行
AD3:AD6
AD7:AD10
直到AD87:AD90
当复制/粘贴到目标工作表时,我想保留这些合并的单元格,因为它们原来也是在目标工作表中保留条件格式规则。

快速提示:这些表单中的某些单元格还包含字体着色和单元格着色。 如果可能的话,我也想保留它们。 如果不是,他们可以省略这个条件。

有关工作表和规则的更多信息:目标工作表中有超过30个条件格式规则。 因此,每次从其他工作表导入新数据时,清除单元格时,格式化范围会继续前进并更改。 我不可能重写这些规则,因为由于数据控制和重复使用这个VBA代码的原因,我需要为每个数据集运行这个代码超过10次(数据控制的原因),并且看代码在哪里应用。 花这一天来重写这些规则的范围实际上是不可能的。

其中一些将取决于您正在使用的Excel版本。 由于Excel 2010目前是主要版本,我将遵循该标准。

如果您试图保留CF规则,并且适用于:在目标工作表上,则不应该使用。 Clear (又名全部清除 )命令。 清除值/公式只应该是足够的,你可以把你的.PasteSpecial数字格式覆盖现有的单元格数字格式。

 Sub Merge_AllSheets_into_One() Dim ws As Worksheet Dim TargetRow As Long Application.Calculation = xlCalculationManual Application.ScreenUpdating = False 'only clear the contents - CF stays and cell number formats will be overwritten 'why clear AA:FN if you are copying AA:GN below? Sheets("Target Sheet").Range("A3:FN10000").Cells.ClearContents TargetRow = 3 For Each ws In ActiveWorkbook.Sheets With ws If .Name Like "*" & strSearch & "-A" Or _ .Name Like "*" & strSearch & "-B" Then 'are there ALWAYS 88 rows to copy? .Range("AA3:GN90").Copy With Worksheets("Target Sheet").Cells(TargetRow, 1) .PasteSpecial Paste:=xlPasteValuesAndNumberFormats 'this is a newer Paste Special option End With TargetRow = TargetRow + 88 End If End With Next ws Application.CutCopyMode = False Application.ScreenUpdating = True End Sub 

这可能也可能不合适,具体取决于您尝试使用的格式。 如果除了手动单元格/行高亮之外,还需要数字格式之外的任何其他内容,最好是简单地用.Clear ,复制并粘贴擦除slate clean,然后重新定义CF规则的适用范围:在转到周期中的下一个工作表之前。