【发布时间】:2019-05-13 08:30:30
【问题描述】:
根据标题,我正在记录一些非常简单的宏,它们应该从一个工作表复制数据,粘贴到另一个工作表,并对第二个工作表的行执行一些简单的操作。
但是,在运行宏(下面的代码)后,excel 变得非常无响应。 甚至滚动浏览文件也会变得很慢。
此外,使用此宏后 CPU 和内存使用率会飙升
我已经录制了宏来自动执行某些任务,但我从未经历过这种减速。
这部分代码将数据从一个工作表复制并粘贴到另一个工作表
Sub Banco_Creazione_Foglio()
'
' Creazione_Foglio_Banco Macro
'
'
Range("A1").Select
Range(Selection, Selection.End(xlToRight)).Select
Range(Selection, Selection.End(xlDown)).Select
Selection.Copy
Sheets.Add(After:=ActiveSheet).Name = "Foglio Banco"
ActiveSheet.Paste
Range("A1").Select
End Sub
这部分代码删除了一些不相关的列。
Range("O4").Select
ActiveWindow.ScrollColumn = 11
ActiveWindow.ScrollColumn = 10
ActiveWindow.ScrollColumn = 9
ActiveWindow.ScrollColumn = 8
ActiveWindow.ScrollColumn = 7
ActiveWindow.ScrollColumn = 6
ActiveWindow.ScrollColumn = 5
ActiveWindow.ScrollColumn = 4
ActiveWindow.ScrollColumn = 3
ActiveWindow.ScrollColumn = 2
ActiveWindow.ScrollColumn = 1
Columns("G:G").Select
ActiveWindow.ScrollColumn = 2
ActiveWindow.ScrollColumn = 3
ActiveWindow.ScrollColumn = 4
ActiveWindow.ScrollColumn = 5
ActiveWindow.ScrollColumn = 6
ActiveWindow.ScrollColumn = 7
Range("G:G,P:P").Select
Range("P1").Activate
ActiveWindow.ScrollColumn = 6
ActiveWindow.ScrollColumn = 5
ActiveWindow.ScrollColumn = 4
Columns("G:Q").Select
Selection.Delete Shift:=xlToLeft
Columns("H:I").Select
Selection.Delete Shift:=xlToLeft
Columns("K:L").Select
Selection.Delete Shift:=xlToLeft
Columns("M:Y").Select
Selection.Delete Shift:=xlToLeft
Columns("N:N").Select
Selection.Delete Shift:=xlToLeft
ActiveWindow.ScrollColumn = 7
ActiveWindow.ScrollColumn = 6
ActiveWindow.ScrollColumn = 5
ActiveWindow.ScrollColumn = 3
ActiveWindow.ScrollColumn = 2
ActiveWindow.ScrollColumn = 1
Range("A1").Select
Range(Selection, Selection.End(xlToRight)).Select
Range(Selection, Selection.End(xlDown)).Select
End Sub
【问题讨论】:
-
嗨 nicola,首先删除代码中的每个
ActiveWindow.ScrollColumn = 4(这只会移动屏幕)并阅读 this 以避免出现.Select或.Activate,您的代码会更干净并且更快。认为您发布的内容不会降低您的计算机速度。 -
嗨达米安,感谢您的回复。但是,我要说的是运行宏后工作簿本身很慢。宏本身运行平稳快速,特别是考虑到我的工作表非常小。
-
可能是因为您正在复制繁重的公式,并且由于自动计算已打开而导致 Excel 变慢?尝试关闭计算。检查Application.Calculation property (Excel)。另外,我们可以看一个数据示例吗?这是所有的代码吗?任何事件编码?您是否在复制其他重物,例如图表或数据透视表?
-
嗨,狐火。是的,这就是所有的代码。即使我怀疑这是原因,我也会尝试关闭计算。没有任何事件编码,我也没有粘贴大量数据,例如图表或数据透视表 目前我对共享数据没有信心,因为它是生产数据。