重命名新工作表会产生“内存不足”错误 - 为什么?

时间:2012-12-04 15:07:29

标签: excel excel-vba excel-2007 out-of-memory vba

我正在尝试创建一个新工作表,并使用以下代码为其命名:

Sub CREATEWORKSHEETS()

    For Each PC In ActiveWorkbook.PivotCaches
        On Error Resume Next
        PC.Refresh
    Next PC
    PvtCache = ActiveWorkbook.PivotCaches.Create(xlDatabase, "Pivot Data!$AF:$AO")

    Sheets("P&L Pivot").Select
    Application.DisplayAlerts = False
    On Error Resume Next
    Sheets("MAIN").Delete
    Application.DisplayAlerts = True
    On Error GoTo 0
    Sheets.Add.Name = "MAIN"
End Sub

但是每当它试图创建新的“MAIN”表时,我总是会出现“Out of Memory”错误。将其拆分为以下内容:

Sheets.Add
ActiveSheet.Name = "MAIN"

建议重命名操作是罪魁祸首,但我无法弄清楚原因。有没有人知道为什么会发生这种情况?

1 个答案:

答案 0 :(得分:3)

将pivotcache设置为等于AF的整个列到AO会导致您达到excel内存限制。尝试将数据透视缓存设置为动态命名的范围,以便在缓存中保留一堆额外的单元格

如果您对您的pivotcache可能使用的内存有疑问,请尝试:(从this website)复制

  

您可以使用。显示数据透视缓存使用的内存   遵循用户定义的功能。将功能代码存储在a中   工作表模块。然后,在工作表上输入公式:

     

= GetMemory(A3)/ 1000

     

用数据透视表中的单元格替换A3。结果显示出来   以千字节为单位。

Function GetMemory(rngPT As Range) As Long 'pivot table tutorial by
 contextures.com   Dim pt As PivotTable   Set pt = rngPT.PivotTable  
 GetMemory = ActiveWorkbook _
     .PivotCaches(pt.CacheIndex).MemoryUsed 
End Function