2012-12-04 50 views
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 

但每當它試圖創建新的「主我總是得到一個「內存不足」的錯誤「表。拆分此爲以下:

Sheets.Add 
ActiveSheet.Name = "MAIN" 

表明,重命名操作是罪魁禍首,但我想不出爲什麼。有誰知道爲什麼會發生這種情況?

+0

當工作簿中已經有MAIN時,會出現此錯誤嗎? –

+0

sheets.add.name =「main」應該會給你一個對象定義的錯誤。嘗試'set wsNew = sheets.add()'然後換行,wsNew.name =「MAIN」' – scott

+0

@ joseph4tw:看起來我仍然得到錯誤,甚至提前手動創建它,並註釋掉刪除爲表單操作。 – Rohaq

回答

3

將pivotcache設置爲等於AF的所有列爲AO時,會導致您遇到excel內存限制。嘗試設置樞軸緩存,你不要有一堆額外細胞的動態命名範圍緩存

被關押如果你在你的pivotcache可能多少內存是使用試試這個疑問是:(從this website)

複製

可以顯示通過樞軸高速緩存使用的,通過使用 以下用戶定義函數的存儲器的 工作表模塊中存儲的功能碼。然後,在工作表上,輸入公式:。

= 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