vba - 将值和颜色从一个工作簿复制到另一个工作簿,而不复制条件格式

标签 vba excel conditional-formatting

我使用这行代码将一个工作簿的内容复制到另一个工作簿,但它只复制值(并避免出现 #VALUE 错误),但我希望复制单元格也是如此:

Workbooks("Payroll Data.xlsm").Worksheets("Pay-MR Compiled").Range("A" & Total_rows_PayMRCompiled + 1 & ":BD" & Total_rows_PayMRCompiled + Total_rows_PayMR - 1).Value = ThisWorkbook.Worksheets("Pay-MR").Range("A2:BD" & Total_rows_PayMR).Value

我的问题是,当我复制值和源格式时,它还会复制条件格式规则,因为我的条件使用类似NOT(ISFORMULA(A2)) 函数检查单元格是否为公式,粘贴的只是数值,全部都会被着色。

例如,实际数据中仅突出显示 1 个单元格,如下所示:

Before copy

但是使用值和源格式粘贴时会发生什么:

After copy

最佳答案

根据您说清楚的条件格式公式,您可以尝试这个

Set sourceRange = ThisWorkbook.Worksheets("Pay-MR").Range("A2:BD" & Total_rows_PayMR)        
With Workbooks("Payroll Data.xlsm").Worksheets("Pay-MR Compiled").Range(sourceRange.Address).Offset(Total_rows_PayMRCompiled - 1) ' reference "target" range
    .Value = sourceRange.Value ' paste "source" range values to referenced (i.e. "target") range
    .Interior.Color = sourceRange.FormatConditions(1).Interior.Color ' color referenced (i.e. "target") range with conditional formatting color
    .Parent.Range(sourceRange.SpecialCells(xlCellTypeFormulas).Offset(Total_rows_PayMRCompiled - 1).Address).Interior.Pattern = xlNone 'clear the color of "target" sheet range corresponding to "source" range cells with formulas 
End With

如果您的“源”范围条件格式有多个公式,则只需将 FormatConditions(1). 中的 1 更改为正确的格式条件项编号即可。

<小时/>

已编辑以在目标范围内添加 Total_rows_PayMRCompiled - 1 行偏移

关于vba - 将值和颜色从一个工作簿复制到另一个工作簿,而不复制条件格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52160864/

相关文章:

regex - 使用正则表达式将编号列表数组拆分为多行编号列表

excel - 使用带有六个条件的图标集的条件格式

excel - 如何将行格式化为按第 1 列中的相似值进行颜色分组

excel - 用于 Excel 的 VBA;编辑非常大的文件

vba - Excel vba向单元格添加空格以达到一定长度

VBA根据关键字将行从sheet1复制到sheet2

vba - 如何使 Excel 单元格等于空(可能通过 VBA 代码)

excel - 根据多个条件格式化

vba - FileSystemObject 代码已经开始抛出错误

excel - 如何通过VBA在excel中创建具有特殊格式的字符串列表