Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1296to1300
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Chart: Datenpunkte via VBA "unsauber" selektiert

Chart: Datenpunkte via VBA "unsauber" selektiert
18.02.2013 13:47:58
Andreas
Hallo Excel Freunde,
seit heute Morgen laboriere ich an einem Phänomen, welches ich mir mit zunehmenden Tests nicht mehr erklären kann. Ich habe ein PivotChart (Säulen, gestapelt) in welchem ich eine Datenreihe (für die Stapelung) und zusätzlich zu den Datenpunkten noch ein Feld zur Kategorisierung auf der X Achse anordne. Prinzipiell möchte ich die Datenpunkte im Chart über VBA separat bearbeiten. Ich habe nun festgestellt, daß der Befehl ActiveChart .SeriesCollection(1).Points(1).Select zwar die korrekte Fläche selektiert, aber wenn ich nun (zu Testzwecken manuell) die Farbe ändere, dann wird nicht nur die eine, augenscheinlich korrekt selektierte Fläche formatiert, sondern die ganze Reihe! Aber ich habe explizit „Datenpunkt formatieren“ gewählt. Es scheint also, als ob aus irgendeinem unbekannten Grund das PivotChart seine einzelnen Flächen/ Objekte nicht mehr sauber voneinander trennt.
Das ist meine Theorie. Die erste Frage ist also, ob ich die Situation richtig sehe, oder ist mir irgend etwas durchgerutscht?
Zweitens muß es doch einen Weg geben diesen Fehler zu beheben, ergo: Dem PivotChart wieder beibringen sauber zwischen seinen Flächen zu unterscheiden.
Hatte jemand von Euch im Forum bereits einmal einen ähnlichen Fehler? Was kann der Grund sein? Was die Lösung?
https://www.herber.de/bbs/user/83953.xlsm
Vielen Dank für Eure Aufmerksamkeit.
Grüße aus Berlin, Andreas Hanisch

1
Beitrag zum Forumthread
Beitrag zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Chart: Datenpunkte via VBA "unsauber" selektiert
19.02.2013 11:48:44
fcs
Hallo Andreas,
dies scheint eine spezielle Macke der gestapelten Säulendiagramme zu sein, wenn sie Pivotdiagramm erstellt werden.
Bei einem "normalen" aus Tabellendaten erstellten gestapelten Säulendiagramm funktioniert die Farbzuordnung zu den einzelnen Datenpunkten.
Ich hab mit deinen Beispieldaten noch ein wenig per Makro experimentiert.
Das extrem sonderbare ist:
Die Farbzuordung funktioniert nicht beim 1 und 3. Datenpunkt (dann wird immer auch der Datenpunkt der jeweils alle ungeraden Datenpunkte der beiden Datenreihen mit formatiert. Beim 2 und 4. Datenpunkt jeder Datenreihe funktioniert die Formatierung der Füllfarbe.
Bei anderen Einstellungen, z.B. den Datenpunktbeschriftungen funktionieren individuelle Einstellungen je Datenpunkt.
Abhilfe beim Problem der Füllfarbe je Datenpunkt kenne ich nicht.
Gruß
Franz
Hier mein Experimentier-Makro:
Sub PivotChart_Datenpunktansprechen()
Dim objSerie As Series, objPoint As Point, objDatalabel As DataLabels
Dim lngColor As Long, intI As Integer, intJ As Integer
Dim varFarben
With Application      'Um sicherzustellen, daß die Applikationsparameter keinen negativen  _
Einfluß haben
.EnableEvents = True
.ScreenUpdating = True
.Calculation = xlCalculationAutomatic
End With
varFarben = Array(65535, 255, 5287936, 15773696, 12611584, 192, 10498160, 5296274)
'Array(gelb, rot, dunkelgrün,blau, dunkelblau, burgundrot,violett,grün)
lngColor = LBound(varFarben) - 1
With ActiveChart
For intI = 1 To .SeriesCollection.Count
'Datenreige formatieren
Set objSerie = .SeriesCollection(intI)
objSerie.Format.Fill.ForeColor.SchemeColor = intI + 1
objSerie.HasDataLabels = True
Set objDatalabel = objSerie.DataLabels
With objDatalabel
.ShowLegendKey = True
.ShowValue = False
.ShowCategoryName = True
.ShowSeriesName = True
.Position = xlLabelPositionCenter
End With
'Datenpunkte formatieren
For intJ = 1 To objSerie.Points.Count
Set objPoint = objSerie.Points(intJ)
lngColor = lngColor + 1
objPoint.Format.Fill.ForeColor.RGB = varFarben(lngColor)
If lngColor = UBound(varFarben) Then lngColor = LBound(varFarben) - 1
If intI = 1 And (intJ Mod 2 = 1) Then
objPoint.DataLabel.ShowValue = True
End If
Next
Next
End With
End Sub

Anzeige

300 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige