Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
768to772
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
768to772
768to772
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

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

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

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige