复制方法因内存而失败

时间:2009-11-08 03:04:15

标签: excel vba excel-vba

在我的工作簿中,我将当前的工作表复制为销售记录。最终,当我尝试复制另一个工作表时,工作簿会填满销售,并在某些时候抛出错误。保存后,然后完全退出Excel,然后重新加载文件,我可以继续没有问题。我猜这是一个内存问题,但我不太确定如何在不重新启动Excel的情况下解决它。我完全不记得错误的措辞,但是它的行为是“工作表的复制方法失败”。 FWIW我在复制工作表的宏的末尾使用“Application.CutCopyMode = False”。

第1次编辑:
我想发布所有代码,但其中有很多代码(主要与更新值,输入验证等无关);如果我发布所有内容,我必须发布所有其他功能才有意义。我只想说,这就是我认为适用的:

ActiveSheet.Copy After:=Sheets(3)
...(more code)...
Call resetInterface(True, True, (wasScreenUpdating), (wasProtected))

和“resetInterface”函数:

' Final operations for a typical function/sub '
Function resetInterface(Optional calc As Boolean = False, Optional ccmode As Boolean = False, Optional scrUpdate As Boolean = True, Optional protectWS As Boolean = False)
    With Application
        If calc Then
            .Calculation = xlCalculationAutomatic
            .Calculate
        End If
        If ccmode Then .CutCopyMode = False
        .ScreenUpdating = scrUpdate
    End With
    If protectWS Then ActiveSheet.Protect
End Function

2 个答案:

答案 0 :(得分:1)

在Excel中复制工作表时,以前会出现问题,即Worksheet对象的CodeName属性将附加1并且变得太长。我认为它已被修复,但这取决于你正在使用的版本。

打开VBA(Alt + F11)并显示Project Explorer(Ctl + R)。查看复制的工作表的CodeNames。它们是Sheet1,Sheet2等。?或者是Sheet1,Sheet11,Sheet111等......?如果是后者,这可能会导致问题。见http://support.microsoft.com/kb/177634

或者可能是您有工作簿级别名称,请参阅http://support.microsoft.com/?kbid=210684

答案 1 :(得分:0)

您所指的错误是: Excel VB运行时错误1004:“工作表类的复制方法失败”

你可以发布你写过的宏吗?