gpt4 book ai didi

vba - Excel VBA - 慢循环执行

转载 作者:行者123 更新时间:2023-12-04 21:55:45 29 4
gpt4 key购买 nike

我创建了一个循环(昨天运行良好),它复制了一系列单元格,然后将它们的值粘贴到一个单元格的右侧,相对于每个单元格。该范围由 91 个单元格组成,它们都由标题分隔,所以我不能只选择它们并粘贴值,因为这“不适用于多项选择”。这个想法是将数据从“当前日期”范围复制到“前一天”范围。

所以今天当我运行宏时,它非常慢,每秒运行大约 1 个单元格。几秒钟后,Excel 变得无响应,但我仍然可以在屏幕上看到它在做什么。当“光标”导致屏幕向下滚动时,工作表的其余部分通常会出现一个灰色区域,您知道无响应窗口的样子。光标一碰到那个灰色区域,循环就开始快速进行,并在一秒钟内完成。 CPU 使用率最初小于 1%,但一发生就上升到 25% 左右。

我将循环放在它自己的子程序中,因为它是一个更大的宏的一部分,它可以更改日期和其他值,但没有任何效果。当我删除该循环时,另一个宏(没有其他循环)运行完美。

任何帮助,将不胜感激。

这是循环的代码:

Sub PreviousDay()

Dim CDay As Range
Set CDay = Range("CurrentDay")

For Each Cell In CDay
Cell.Copy
Cell.Offset(0, 1).PasteSpecial Paste:=xlPasteValues
Next Cell
Application.CutCopyMode = False

End Sub

最佳答案

你根本不需要循环:

Sub PreviousDay()
With Range("CurrentDay")
.Offset(, 1).Value = .Value
End With
End Sub

编辑:如果它不是一个连续的范围,您确实需要循环,但您可以按区域循环:
Sub PreviousDay()
Dim rgArea as Range
For each rgArea in Range("CurrentDay").Areas
rgArea.Offset(, 1).Value = rgArea.Value
Next rgArea
End Sub

关于vba - Excel VBA - 慢循环执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45214936/

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