より古いExcelのバージョンに関係します。残念なことにVBAでは、ピボットテーブル/グラフを更新すると、すべてのカスタム書式が失われます。 Excelは基本的に毎回新しいものを作成しています。
Excelで手作業で書式を設定した場合、Excelはそれを追跡し、データを変更するときに書式設定を保持します。私が考えることができる例は、誤って元に戻したシートを削除した場合ですが、VBAでシートを削除した場合は元に戻すことはできません。
私はこれを解決策として試してみます。
2つのプロシージャを作成します.1つはデータが与えられたときにゼロからピボットテーブルを作成し、もう1つはピボットテーブルの範囲が与えられたときにピボットテーブルをフォーマットします。コードはこの
Sub GeneratePivotTable(rng as Range, var1 as Variant, var2 as Variant)
' Code here that makes your Pivot Table
' pass whatever you need to get the job done
End Sub
Sub FormatPivotTable(rng as Range, var1 as Variant, var2 as Variant)
' Code here to format pivot table given range and other information
' You might even be able to just directly pass a PivotTable object :D
End Sub
のようになります次に、あなたがあなたの現在のコードのように、それを機能させるために次に何をしなければならないすべてはただの両方を呼び出すラッパー関数を作成することです。
Sub GenerateAndFormatPivotTable(rng as Range, var1 as Variant, var2 as Variant)
Call GeneratePivotTable(rng, var1, var2)
' Maybe some processing here to set up the next call
Call FormatPivotTable(rng, var1, var2)
End Sub
あなたがのようなきちんとした何かができるオブジェクトとしてピボットテーブルを渡したい場合は....
Function GeneratePivotTable(variables as Variant) as PivotTable
' Generate your pivot table and return it
GeneratePivotTable = myPivotTableThatIMade
End Function
Sub FormatPivotTable(aPivotTableThatYouMake as PivotTable)
' Code that formats your PivotTable
End Sub
Sub GenerateAndFormatPivotTable(rng as Range, var1 as Variant, var2 as Variant
Call FormatPivotTable(GeneratePivotTable(variables as Variant)
End Sub
あなたはこのすべてを行う表を作れば、それを微調整する必要があるので、そのFormatPivotTableを使用して、更新されたテーブルをフォーマットすることができます。余分な狂気のために
、それはピボットテーブルを検索し、書式設定の機能を呼び出すためにWorksheet.ChangeまたはWorksheet.Activateイベントだピボットテーブルの火を持っているシートを持っている:D
はどこかXLSファイルまたはサンプルを置いてもらえませんそれが実際の問題を見るのですか? – shahkalpesh
すばやく考えて、毎回マクロでチャートを再作成していますか? – shahkalpesh
xlsファイルの例:http://www.scribd.com/share/upload/13087523/20qu55pbhw9wllhuy3xk Excel 2007で見ると、正常に動作します。旧バージョンのExcelではなく – TheObserver