excel - 宏在循环中复制内容需要更多时间
问题描述
我有下面的代码片段,它复制特定的行集并将其粘贴到 Excel 工作表中的另一行下。根据汽车的数量,套组副本将被更改。
B:E 列包含一些数据,H:K 列是我将在 B:E 列的最后一行复制和粘贴的内容。并且 H:K 列中的值是根据公式得出的。这些值取决于汽车数量(范围:CarCnt_counter),它有大约 18 行要复制。因此,如果汽车计数为 20,则循环执行 20 次并复制 18 行 20 次,并根据汽车计数更改值。Range CarFields 将数据保存在 H:K 列中,Rowmap_Last 范围是根据 B:E 列的最后一行编号的公式确定的
Worksheets("RowMapping").Select
ActiveSheet.DisplayPageBreaks = False
Application.ScreenUpdating = False
Dim CarCnt As Integer
Dim Total As Integer
Total = Range("CarCnt_count")
For CarCnt = 1 To Total
Range("CarCnt_counter") = CarCnt
Worksheets("RowMapping").Calculate
Range("CarFields").Copy
Range("B" & Range("RowMap_Last").Value).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Application.CutCopyMode = False
Next CarCnt
上面是执行此操作的代码。我相信循环中的计算方法会减慢它的速度。我什至将计算移出循环给出以下代码
Application.Calculation = XlCalculationAutomatic
这仍然没有提高性能。对此的任何帮助将不胜感激。
解决方案
在循环上复制和粘贴速度较慢。尝试以下 Range.Value = Range.value 方法,而不是复制和粘贴。
Dim CarCnt As Integer
Dim Total As Integer
Application.ScreenUpdating = False
With Worksheets("RowMapping")
.DisplayPageBreaks = False
Total = Range("CarCnt_count")
For CarCnt = 1 To Total
Range("CarCnt_counter") = CarCnt
Range("CarFields").Value = Range("B" & Range("RowMap_Last")).Value
Next CarCnt
End With
Application.ScreenUpdating = True
禁用屏幕更新会提高计算速度。
Application.ScreenUpdating = False
推荐阅读
- https - HSTS 阻止访问使用主机和使用自签名证书映射到本地主机的子域
- sql-server - 在 Visual Basic 中连接到自己制作的 SQL 数据库不起作用
- c# - AutoMapper .AfterMap() 与 .ForMember()
- javascript - 三个js,什么是toArray
- prolog - SWI-Prolog 使用位移 CLPFD 报告错误答案
- bash - 使用 grep 在 MacOs ifconfig 上仅具有接口名称和 MAC 地址
- arrays - 在 ruby 中将 JSON 数组数据转换为字符串的快捷方式
- powershell - Select-Object -First 影响管道中的先前 cmdlet
- visual-studio - 在 NetCore 中发布 DLL 文件 FTP
- javascript - 使所有清除按钮在计算器上工作