Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Grafik formatieren

Forumthread: Grafik formatieren

Grafik formatieren
07.06.2006 09:42:39
PopS
Hallo,
ich habe folgendes Problem: Ich möchte in Excel ein Diagrammblatt ansprechen und formatieren. Es handelt sich um ein Liniendiagramm mit (insgesamt 12) Datenpunkten. Ich möchte bei der Formatierung dafür sorgen, dass Nullwerte und nicht in die Vorlagentabelle eingetragene Werte automatisch entfernt werden. Fehlt beispielsweise der Werte an Position 5, dann sollen a) die Punkte 1-4 eingetragen und mit einer Liene verbunden werden und b) die Punkte 6-12 ebenso.
Zwischen 4 und 6 soll weder ein Punkt noch eine Liene sein!
Ich habe es wie folgt probiert. Leider erfolglos!
*********************************************************

Sub grafiken_formatieren_D()
Dim a, j, k As Integer
Dim Cht As Chart
Dim ChtSCol As SeriesCollection
Dim ChtPt As Point
For a = 1 To 2
ThisWorkbook.Sheets("Diagramm").Activate
Set Cht = ActiveSheet.ChartObjects(a).Chart
Set ChtSCol = Cht.SeriesCollection
On Error Resume Next
For j = 1 To ChtSCol.Count
ChtSCol(j).ApplyDataLabels ShowValue:=True
For k = 1 To ChtSCol(j).Points.Count
Set ChtPt = ChtSCol(j).Points(k)
If ChtPt.DataLabel.Text <= "0,00" Then
ChtPt.DataLabel.Delete
ElseIf ChtPt.DataLabel.Text > "0,00" Then
ChtPt.DataLabel.Border.LineStyle = xlContinious
ChtPt.DataLabel.Border.Weight = xlHairline
ChtPt.DataLabel.Border.ColorIndex = 16
ChtPt.DataLabel.Shadow = False
ChtPt.DataLabel.Interior.ColorIndex = 2
ChtPt.DataLabel.Interior.PatternColorIndex = 2
ChtPt.DataLabel.InteriorPattern = xlSolid
ChtPt.DataLabel.Font.Name = "Arial"
ChtPt.DataLabel.Font.FontStyle = "Standard"
ChtPt.DataLabel.Font.Size = 6
ChtPt.DataLabel.Font.Strikethrough = False
ChtPt.DataLabel.Font.Superscript = False
ChtPt.DataLabel.Font.Subscript = False
ChtPt.DataLabel.Font.OutlineFont = False
ChtPt.DataLabel.Font.Shadow = False
End If
Next k
Next j
Next a
End Sub

************************************************************
Ich freue mich über Hilfe. Vielen Dank,
PopS
Anzeige

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Grafik formatieren
07.06.2006 11:36:24
fcs
Hallo Pops,
der einfachste Weg wäre, in der Datentabelle für die Y-Werte, die den Wert 0 haben, die Zellinhalte zu löschen.
Ich habe mir dein Makro mal vorgenommen und angepaßt, so dass die gewünschten Löschungen von Markierungen und Linien an Datenpunkten mit Wert 0 erfolgen. Dabei wird ggf. jedoch die Legende im Diagramm verändert, da Excel beim Formatieren einzelner Datenpunkte für jeden Datenpunkt eine Legende anlegt (zumindest ist das unter Excel97 passiert).
Das Makro setzt zunächst für die jeweilige Datenreihe die Formatierung zurück - notwendig, falls die Daten geändert werden und dann das Diagramm aktualisiert wird.

Sub grafiken_formatieren_D()
Dim a, j, k As Integer
Dim Cht As Chart
Dim ChtSCol As SeriesCollection
Dim ChtPt As Point
Dim Darray As Variant
For a = 1 To 2
ThisWorkbook.Sheets("Diagramm").Activate
Set Cht = ActiveSheet.ChartObjects(a).Chart
Set ChtSCol = Cht.SeriesCollection
On Error Resume Next
For j = 1 To ChtSCol.Count
With ChtSCol(j)
'Feld mit Werten der Linienpunkte erzeugen
Darray = .Values
'Format der Linie für Datenreihe zurücksetzen
With .Border
.Weight = xlThin
.LineStyle = xlAutomatic
End With
'Format für Datenpunkte zurücksetzen
.MarkerBackgroundColorIndex = xlAutomatic
.MarkerForegroundColorIndex = xlAutomatic
.MarkerStyle = xlAutomatic
.Smooth = False
.MarkerSize = 5
.Shadow = False
'Datenpunktbeschriftungen anzeigen
.ApplyDataLabels Type:=xlDataLabelsShowValue
For k = 1 To .Points.Count
Set ChtPt = .Points(k)
If Darray(k) <= 0 Then
'Datenpunktbeschriftung löschen
ChtPt.DataLabel.Delete
'Punktmarkierung und Line des Datenpunkts entfernen
ChtPt.MarkerStyle = xlMarkerStyleNone
ChtPt.Border.LineStyle = xlNone
'Line zum nächsten Datenpunkts entfernen
If k < .Points.Count Then
.Points(k + 1).Border.LineStyle = xlNone
End If
ElseIf Darray(k) > 0 Then
' Datenpunktbeschriftungen formatieren
ChtPt.DataLabel.Border.LineStyle = xlContinious
ChtPt.DataLabel.Border.Weight = xlHairline
ChtPt.DataLabel.Border.ColorIndex = 16
ChtPt.DataLabel.Shadow = False
ChtPt.DataLabel.Interior.ColorIndex = 2
ChtPt.DataLabel.Interior.PatternColorIndex = 2
ChtPt.DataLabel.InteriorPattern = xlSolid
ChtPt.DataLabel.Font.Name = "Arial"
ChtPt.DataLabel.Font.FontStyle = "Standard"
ChtPt.DataLabel.Font.Size = 6
ChtPt.DataLabel.Font.Strikethrough = False
ChtPt.DataLabel.Font.Superscript = False
ChtPt.DataLabel.Font.Subscript = False
ChtPt.DataLabel.Font.OutlineFont = False
ChtPt.DataLabel.Font.Shadow = False
End If
Next k
End With
Next j
Next a
End Sub

mfg
Franz
Anzeige
Danke :)
07.06.2006 11:50:01
PopS
Vielen Dank,
funktioniert super!
PopS
Legende
07.06.2006 13:36:08
PopS
Tja, da dachte ich das mit der Legende wäre einfach. Ich habe aber das gleiche Probleme unter Excel 2003:
"Dabei wird ggf. jedoch die Legende im Diagramm verändert, da Excel beim Formatieren einzelner Datenpunkte für jeden Datenpunkt eine Legende anlegt (zumindest ist das unter Excel97 passiert)."
Hat jemand eine Idee was man da machen kann?
PopS
Anzeige
;

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige