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"

名前の変更操作が原因であることが示唆されていますが、理由がわかりません。なぜこれが起こっているのか誰かが知っていますか?

4

1 に答える 1

3

AFからAOの列全体に等しいピボットキャッシュを設定すると、Excelのメモリ制限に達します。ピボットキャッシュを動的に名前が付けられた範囲に設定してみてください。キャッシュに余分なセルがたくさん保持されていないようにします。

ピボットキャッシュが使用している可能性のあるメモリの量がわからない場合は、これを試してください:(このWebサイトからコピー)

次のユーザー定義関数を使用して、ピボットキャッシュで使用されているメモリを表示できます。ワークシートモジュールに機能コードを保存します。次に、ワークシートに次の数式を入力します。

= 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
于 2012-12-04T17:11:34.110 に答える