回答,见下文。
我有一段打开文件的代码,从打开的文件复制日期,然后粘贴到另一个文件。当我单步执行代码时,一切正常。当我运行代码时,它重新启动excel。想法?
duplicated(DF1[ c("ID", "Date", "Sale")])
然后对wb2,wb3等重复此代码,但现在粘贴到其各自的工作表中。
答案 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
您的代码将停止崩溃,并且运行得更快。