VBA在运行时崩溃,但在步进时会起作用

时间:2018-04-03 14:55:53

标签: excel-vba file copy-paste vba excel

回答,见下文。

我有一段打开文件的代码,从打开的文件复制日期,然后粘贴到另一个文件。当我单步执行代码时,一切正常。当我运行代码时,它重新启动excel。想法?

duplicated(DF1[ c("ID", "Date", "Sale")])

然后对wb2,wb3等重复此代码,但现在粘贴到其各自的工作表中。

1 个答案:

答案 0 :(得分:1)

我不同意上面的海报 - 这听起来不像鬼魂。当你遇到Excel完全崩溃的时候,一个幽灵中断会让你无缘无故地调试(ala使用暂停/中断键)。

我的理论: excel中的复制/粘贴功能是一个高度密集的过程。这对于隔离的复制/粘贴是可以的。对于你的代码,特别是没有任何Application.CutCopyMode = False语句(并非所有看似记录函数插入的无关语句实际上都是无关紧要的),你堆叠了一堆副本而没有清除它们。然后应用程序耗尽内存并崩溃。

我的解决方案:

替换每一行 -

workbook1.Sheets("Sheet1").Range("C9:c11").Copy
ThisWorkbook.Sheets("wb1").Range("k18").PasteSpecial Paste:=xlPasteValues

有这样的事情 -

ThisWorkbook.Sheets("wb1").Range("k18:k20").value = workbook1.Sheets("Sheet1").Range("C9:c11").value

您的代码将停止崩溃,并且运行得更快。