使用VBA复制有条件格式化的单元格

我正在编写一个脚本,将数据从一个工作簿复制到另一个工作簿。 后者被用作一种数据库(不是我的想法)。 作为一个testing,我正在复制约300行数据,其中3列条件格式,其余是纯文本。 复制文本很容易,而且接近即时,但格式化更困难。 目前我正在使用下面的代码来复制格式化的单元格:

thisSheet.Range("G" & CStr(rRow), "I" & CStr(rRow)).Copy masterSheet.Range("G" & CStr(mRow), "I" & CStr(mRow)).PasteSpecial (xlPasteAll) 

约300行,这大约需要40秒,这太慢了。 我不能复制由多行组成的范围,因为它们不是按顺序粘贴的。

我尝试使用下面的代码来尝试和复制格式。

 masterSheet.Range("G" & CStr(mRow), "I" & CStr(mRow)).value = thisSheet.Range("G" & CStr(rRow), "I" & CStr(rRow)).value masterSheet.Range("G" & CStr(mRow), "I" & CStr(mRow)).Font.Color = thisSheet.Range("G" & CStr(rRow), "I" & CStr(rRow)).Font.Color masterSheet.Range("G" & CStr(mRow), "I" & CStr(mRow)).Interior.ColorIndex = thisSheet.Range("G" & CStr(rRow), "I" & CStr(rRow)).Interior.ColorIndex 'cell color and font color are the only things i am interested in 

此代码在大约3秒钟内执行,但条件格式应用的格式都不会被复制。

有没有更有效的方式来复制条件格式应用的单元格和字体颜色?

尝试添加到您的代码的开始:

 Application.ScreenUpdating = False Application.Calculation = xlCalculationManual 

而这到了最后:

 Application.ScreenUpdating = True Application.Calculation = xlCalculationAutomatic 

如果这不能提高你的速度到你需要的地方,我会build议硬编码条件格式到VBA中。

例如,如果其中一个条件格式设置规则在数字超过100时使单元格变为红色,则将该检查添加到VBA中,同时复制值并将目标单元格设置为基于其值的所需格式。