1

我正在编写一个脚本,将数据从一个工作簿复制到另一个工作簿。后者被用作一种数据库(不是我的想法)。作为测试,我正在复制约 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 秒内执行,但不会复制条件格式应用的任何格式。

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

4

1 回答 1

1

尝试将此添加到代码的开头:

Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual

到最后:

Application.ScreenUpdating = True
Application.Calculation = xlCalculationAutomatic

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

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

于 2012-07-09T18:21:32.407 回答