【发布时间】:2021-05-22 07:09:39
【问题描述】:
我已经设法编写了运行但速度很慢的代码(大约需要 2 分钟 atm 并且块大小很快会增加 52)。我想知道是否有更好的方法来实现这一小段代码。代码同时选择 10 张,以便复制和粘贴将影响所有 10 张。如您所见,我可以开始工作的唯一复制和粘贴是绝对最差的版本,因为我尝试的所有其他选项都只将范围粘贴到一张纸上,而不是全部 10 个。很想知道是否有可能做得更好。我必须激活第一张纸并执行完整的 range.copy、range.select、activesheet.paste! varray 包含 10 个工作表名称,MaxRngLive 是 20,RngLiveRange 是包含实时公式的 156 列的一维数组,RngPasteRange 是一个 156x156 块,这些公式将被粘贴到其中。稍后在代码中,我将除第一行之外的每个块中的所有单元格赋值(再次使用 range.pastespecial xlpastevalues!),从而将文件大小总体减少约 75%。
Sheets(varray).Select
Sheets("c_DAZN.com_GF").Activate
Set ws2 = wb.Worksheets(varray(0))
For j = 1 To MaxRngLive
Application.StatusBar = ws2.Name & " " & j
Set RngLiveRange = ws2.Range(Range(RngLiveName).Rows(j))
Set RngPasteRange = ws2.Range(Range(RngPasteName).Rows(j))
RngLiveRange.Copy
RngPasteRange.Select
ActiveSheet.Paste
Next j
非常感谢大家!
【问题讨论】:
-
你不能只复制和粘贴整个范围而不是逐行进行吗?
-
它确实一次粘贴了所有内容,但粘贴目标块为 156 x 156 并由几行分隔,因此这就是循环所做的 - 遍历所有 20 个块。 RngPasteRange 是一个 156x156 二维数组,例如 af70、af300、af700、af1000 等。我可能需要上传更多代码,以便更容易理解问题。