Hallo zusammen,
hier meine Prozedure
~~~~~~~~~~~~~~~~~
Sub ProjektVertriebGesamt()
'VARIABLENDEKLARATION
strTabName = "PVGANZ"
strPTName = "PT01"
strPTCName = "PTC01"
strQuelle = "Projekte"
strSourceData = "PV_Projekte"
'Quelltabele aktivieren
Worksheets("Projekte").Activate
'PivotCache erstellen
Set pc = ActiveWorkbook.PivotCaches.Create( _
SourceType:=xlDatabase, _
SourceData:=strSourceData)
'Tabellenblatt für die PivotTabelle erstellen
Worksheets.Add after:=Worksheets(strQuelle)
'Namen für das Tabellenblatt festlegen
ActiveSheet.Name = strTabName
'PivotTabelle erstellen
Set pt = pc.CreatePivotTable(TableDestination:=Range("A3"), _
TableName:=strPTName)
'Felder zuordnen
With pt
'ZEILEN
.PivotFields("Monat/Jahr").Orientation = xlRowField
'SPALTEN
'.PivotFields("Betreuer (validiert)").Orientation = xlColumnField
'WERTE
With .PivotFields("Projekt")
.Orientation = xlDataField
.NumberFormat = "0"
.Function = xlCount
.Name = "Anzahl von Projekte"
End With
'FILTER
.PivotFields("Abteilung").Orientation = xlPageField
End With
'FILTER SETZEN
' Werte zuweisen
Set pt = ActiveSheet.PivotTables(strPTName)
Set pf = pt.PivotFields("Abteilung")
'ITEMS 'VERTRIEB' anzeigen
For Each pi In pf.PivotItems
Select Case pi.Name
Case "Vertrieb"
pi.Visible = True ' Auswahl einblenden
Case Else
pi.Visible = False ' Rest ausblenden
End Select
Next
'Namen der PivotTabelle schreiben
ActiveSheet.Range("D1").Value = ActiveSheet.PivotTables(strPTName).Name
' DIAGRAMM
' PivotTabelle aktivieren
Worksheets(strTabName).Activate
' Ermittlung Wertebereich
lastRow = ActiveSheet.UsedRange.SpecialCells(xlCellTypeLastCell).Row ' Ermittlung letzte beschriebene Zeile
lastCol = ActiveSheet.UsedRange.SpecialCells(xlCellTypeLastCell).Column ' Ermittlung letzte beschriebene Spalte
' Wertebereich festlegen
Set WerteBereich = Worksheets(strTabName).Range(Cells(1, 1), Cells(lastRow, lastCol))
' Diagramm erstellen
Set MeinDiagramm = Worksheets(strTabName).Shapes.AddChart2( _
Style:=234, _
XlChartType:=xlLineMarkers, _
Left:=400, _
Top:=10, _
Width:=600, _
Height:=200, _
Newlayout:=True).CHART
' Name festlegen
ActiveSheet.ChartObjects(1).Name = strPTCName
' Das eingebettete Diagramm bearbeiten
Worksheets(strTabName).ChartObjects(1).Activate ' Aktivierung
With ActiveChart
.SetElement (msoElementLegendNone) ' OHNE Legende
.SetElement (msoElementChartTitleNone) ' OHNE Diagrammtitel
.ShowAllFieldButtons = False ' OHNE Steuerelemente
.SetElement (msoElementPrimaryValueGridLinesMajor) ' MIT Gitternetzlinien Horizontal
.SetElement (msoElementPrimaryCategoryGridLinesMajor) ' MIT Gitternetzlinien VERTIKAL
End With
ActiveChart.FullSeriesCollection(1).Trendlines.Add _
Type:=xlLinear, _
Forward:=0, _
Backward:=0, _
DisplayEquation:=0, _
DisplayRSquared:=0, _
Name:="Linear (Vertrieb)" ' Trendlinie einfügen
ActiveChart.FullSeriesCollection(1).Trendlines(1).Select ' Trendlinie markieren
With Selection.Format.Line ' Trendlinie formatieren
.Visible = msoTrue
.DashStyle = msoLineLongDash
.Weight = 1
End With
End Sub
~~~~~~~~~~~~~~~~~
Es gibt noch eine zweite Prozedure die einen abweichenden Zeileneintrag hat. Zusätzlich wird auch ein Balkendiagramm erzeugt.
Folgendes habe ich in einer separaten Arbeitsmappe ausprobiert
- Ausführen der Prozeduren (inkl. Diagramm-Erstellung) wie oben dargestellt. Dashboard OHNE komplette Funktion
- Ausführen der Prozeduren (ohen Diagramm-Erstellung per VBA) und Diagramme manuell erzeugt. Dashboard OHNE Funktion
- Erstellung PivotTabellen und PivotChart manuell. Dashboard hat VOLLE Funktion
Somit liegt ein Fehler schon vor bei der Erzeugung der zugrundeliegenden PivotTabelle. NUR WELCHER, das ist heir die Frage?
Bitte meldet mir alle eure Anmerkungen. Ich hoffe nützliche Hinweise von euch zu bekommen.
Gruß Carsten
|