, wie es klingt für mich ist, dass die VBA-Code die Pivot-Tabelle/Grafik erzeugt und dann nachher Sie versuchen, es zu zwicken. Wenn Sie die Pivot-Tabelle/das Pivot-Diagramm aktualisieren, geht Ihre benutzerdefinierte Formatierung leider mit VBA verloren. Excel erstellt grundsätzlich auch jedes Mal ein neues.
Wenn Sie die Formatierung von Hand in Excel vorgenommen haben, denke ich, dass Excel dies beibehält und Ihre Formatierung beim Ändern der Daten beibehalten wird. Das Beispiel, an das ich denken kann, ist, wenn Sie versehentlich ein Blatt löschen, das Sie rückgängig machen. Wenn Sie jedoch ein Blatt in VBA löschen, gibt es keine Möglichkeit zum Rückgängigmachen.
Ich würde dies als eine Lösung versuchen.
Erstellen Sie zwei Prozeduren: eine, die eine PivotTable von Grund auf neu erstellt, wenn die Daten angegeben werden, und die andere, die eine Pivot-Tabelle formatiert, wenn der Bereich einer Pivot-Tabelle angegeben wird. Der Code könnte so etwas wie diese
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
Dann schauen Sie alles, was Sie haben würden als nächstes zu tun, um es wie Ihr aktueller Code funktionsfähig zu machen ist eine Wrapper-Funktion erstellen, die beide nur aufruft.
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
Wenn Sie die Pivot-Tabelle als ein Objekt zu übergeben wollte, dass du ordentlich etwas tun könnte, wie ....
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
Sie das alles so, wenn Sie einen Tisch zu machen, dann ist es zwicken müssen können Sie diese FormatPivotTable verwenden, um die aktualisierte Tabelle zu formatieren.
Für zusätzlichen Wahnsinn, haben das Blatt, das das Pivottable Feuer ist es Worksheet.Change oder Worksheet.Activate Ereignis für eine Pivot-Tabelle und rufen Sie Ihre Formatierungsfunktion zu suchen hat: D
Könnten Sie die xls-Datei irgendwo oder in ein Probe davon das Problem in Aktion zu sehen? – shahkalpesh
Kurz überlegt - erstellen Sie das Diagramm jedes Mal neu im Makro? – shahkalpesh
Beispiel xls-Datei hier: http://www.scribd.com/share/upload/13087523/20qu55pbhw9wllhuy3xk Beachten Sie, dass wenn Sie es in Excel 2007 betrachten, funktioniert es gut. Nur nicht in älteren Versionen von Excel – TheObserver