年長這聽起來像我是VBA代碼生成的數據透視表/圖表,然後你想事後調整它。不幸的是,使用VBA時,當您更新數據透視表/圖表時,您的所有自定義格式都將丟失。 Excel基本上每次都創建一個新的。
如果您在Excel中手動進行格式設置,我認爲Excel會跟蹤該格式,並會在您更改數據時保留格式。我能想到的例子是,如果你不小心刪除了一個工作表,你可以撤銷它,但是如果你在VBA中刪除工作表,那麼沒有辦法撤銷。
我會試試這個解決方案。
創建兩個過程:一個給定的數據時從頭創建一個數據透視表,和給定的樞軸表的範圍時,用於格式化的樞軸表中的其他。該代碼可能是這個樣子
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 2009-06-24 04:53:56