在我的excel VBA代码中,我需要将一些数据从一个范围移动到另一个工作表。迭代100个单元需要很长的时间
截至目前,我通过迭代的范围,并复制值是这样的:
For offset = 0 To 101
ActiveWorkbook.Sheets(Sheet).Range("C3").offset(offset, 0).Value = ActiveSheet.Range("D4").offset(offset, 0).Value
Next offset
但是,它需要几乎一分钟,重复和复制值的100个单元。
我会更好地使用Copy-Paste以编程方式,还是有办法一次复制整个范围?类似:
ActiveWorkbook.Sheets(Sheet).Range("C3:C102").Value = ActiveSheet.Range("D4:D104").Value
我希望不需要复制粘贴,因为当你这样做时,你的工作表视图从源工作表跳转到目标工作表。我需要重复这个总共20次,最后我会盯着excel闪烁的表单。但我会尝试一下,如果性能明显加快,我就不得不去做。 – xbonez 2011-02-17 22:35:48
有趣的是,仅需100行就需要45秒。我有一个宏,可以一次遍历1000行,并且可以从另一个电子表格中更新大约50个左右的宏,并且它在几秒钟内都可以工作。 – joshhendo 2011-02-18 09:28:13
重要注意事项计入Application.Calculation。如果打开了计算,则单元格中输入的每个值都会触发重新计算(每个工作簿打开)。 – CaBieberach 2011-02-19 12:18:35