gpt4 book ai didi

vba - 迭代 100 个单元需要太长时间

转载 作者:行者123 更新时间:2023-12-04 21:58:10 27 4
gpt4 key购买 nike

在我的 excel VBA 代码中,我需要将一些数据从一个范围移动到另一个工作表。

到目前为止,我正在遍历范围并复制如下值:

For offset = 0 To 101
ActiveWorkbook.Sheets(Sheet).Range("C3").offset(offset, 0).Value = ActiveSheet.Range("D4").offset(offset, 0).Value
Next offset

但是,迭代和复制这 100 个单元格的值几乎需要一分钟。

以编程方式使用复制粘贴会更好,还是有办法一次复制整个范围?比如:

ActiveWorkbook.Sheets(Sheet).Range("C3:C102").Value = ActiveSheet.Range("D4:D104").Value

最佳答案

您可以一次将整个范围读入 Variant 数组,然后将其写回另一个范围。这也是快速、无闪烁的,并且还有额外的好处,如果您愿意,您可以对数据进行一些操作。

Dim varDummy As Variant
varDummy = ActiveSheet.Range("D4:D104")
' Can insert code to do stuff with varDummy here
Workbook.Sheets(Sheet).Range("C3:C103") = varDummy

这是我通过艰难的方式学到的:尽可能避免复制/粘贴!复制和粘贴使用剪贴板。其他程序可能会在您的代码运行时读取/写入剪贴板,这将导致疯狂的、不可预测的结果。

此外,尽量减少 VBA 和 Excel 之间的交互次数通常是个好主意,因为它们很慢。在循环中进行这样的交互会成倍地慢。

关于vba - 迭代 100 个单元需要太长时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5035399/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com