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

Excel 重命名新工作表会产生“0”;“内存不足”;错误-为什么?,excel,excel-2007,out-of-memory,vba,Excel,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") Shee

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

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
但每当它试图创建新的“主”工作表时,我总是会遇到“内存不足”错误。将其拆分为以下内容:

Sheets.Add
ActiveSheet.Name = "MAIN"

暗示重命名操作是罪魁祸首,但我不明白为什么。有人知道为什么会发生这种情况吗?

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

如果您不确定您的数据透视缓存可能使用了多少内存,请尝试以下方法:(复制自

您可以使用 遵循用户定义的函数。将函数代码存储在 工作表模块。然后,在工作表上输入公式:

=GetMemory(A3)/1000

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


将pivotcache设置为等于AF到AO的整列会导致您达到excel内存限制。请尝试将pivot cache设置为动态命名的范围,以避免在缓存中保留大量额外的单元格

如果您不确定您的数据透视缓存可能使用了多少内存,请尝试以下方法:(复制自

您可以使用 遵循用户定义的函数。将函数代码存储在 工作表模块。然后,在工作表上输入公式:

=GetMemory(A3)/1000

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


当工作簿中已经有MAIN时,是否会出现此错误?sheets.add.name=“MAIN”无论如何都会给您一个对象定义的错误。请尝试
设置wsNew=sheets.add()
然后在新行上,wsNew.name=“MAIN”`@joseph4tw:看来我仍然会收到错误,甚至是事先手动创建并注释掉工作表的删除操作。@scott:以下仍然会产生相同的错误
Set wsNew=Sheets.Add()
wsNew.Name=“MAIN”
我的猜测是,将数据透视缓存设置为等于AF到AO的整列会导致您达到excel内存限制。请尝试将数据透视缓存设置为动态命名的范围,以确保缓存中没有一堆额外的单元格。当工作簿中已经有MAIN时,是否会出现此错误?sheets.add.name=“MAIN”无论如何都应该给您一个对象定义的错误。请尝试设置wsNew=sheets.add()然后在新行wsNew.name=“MAIN”`@joseph4tw:看来我仍然会收到错误,甚至是事先手动创建并注释掉工作表的删除操作。@scott:以下仍然会产生相同的错误
Set wsNew=Sheets.Add()
wsNew.Name=“MAIN”
我的猜测是,将数据透视缓存设置为等于AF到AO的整列会导致您达到excel内存限制。请尝试将数据透视缓存设置为动态命名的范围,以确保缓存中没有一堆额外的单元格
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