0

我正在尝试制作一张新工作表并使用以下代码为其命名:

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"

建议重命名操作是罪魁祸首,但我不知道为什么。有谁知道为什么会发生这种情况?

4

1 回答 1

3

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

如果您不确定您的数据透视缓存可能使用多少内存,请尝试以下操作:(从本网站复制)

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

=获取内存(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
于 2012-12-04T17:11:34.110 回答