我正在尝试创建一个新工作表,并使用以下代码为其命名:
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"
建议重命名操作是罪魁祸首,但我无法弄清楚原因。有没有人知道为什么会发生这种情况?
答案 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