AW: Liste mit Chart-Eigenschaften?
15.03.2012 22:50:34
fcs
Hallo Tommi,
das Objektmodel für Diagramme (Charts) ist sehr komplex und und zum Teil auch extrem tief gestaffelt. So ist eine Grundsätzlich kann man die meisten Formatierungen, die manuell einstellbar sind auch per Makro anpassen.
Wenn du dir einen Überblick über die Eigenschaften und Methoden für einzelne Chartelemente verschaffen willst, dann kannst du im VBA-Editor unter Ansicht-Objektkatalog danach suchen. Allerdings muss man bei der Suche die englichen Bezeichnungen der Diagrammelemente verwenden. Guter Start zum suchen sind chart oder serie.
Beim Erstellen von VBA-Prozeduren für Chart-Elemente ist es sehr hilfreich mit entsprechenden Objektvariablen zu arbeiten.
Das erleichtert das Programmieren, da im Editor nach dem Setzen des Punktes nach den Variablen immer die zugehörige Ausahl an Eigenschaften/Methoden angezeigt wird.
Nachfolgend ein Beispiel für formatierne von Elementen in einem XY-Punkt-Diagramm, das zeigt wie aufwendig/komplex das Formatieren per VBA werden kann.
Gruß
Franz
Sub ChartElementeFormatieren()
Dim objChart As Chart, objReihe As Series, objChartArea As ChartArea
Dim objDatalabels As DataLabels, objAxis As Axis
Set objChart = ActiveWorkbook.Charts(1)
With objChart
Set objChartArea = .ChartArea
With objChartArea
.ClearFormats
With .Format.TextFrame2.TextRange.Font
.Size = 16
.Name = "TimesNewRoman"
End With
End With
Set objReihe = .SeriesCollection(1) '1. Datenreihe formatieren
With objReihe
.HasDataLabels = True
Set objDatalabels = .DataLabels
With objDatalabels
.ShowValue = True
.NumberFormatLinked = True
.Position = xlLabelPositionBelow
With .Format.TextFrame2.TextRange
With .Font
.Size = 20
.Name = "Arial"
.Italic = msoTrue
End With
End With
End With
With .Format
With .Line
.ForeColor.RGB = RGB(255, 0, 0)
.BackColor.RGB = RGB(255, 0, 0)
.DashStyle = msoLineDashDot
.Weight = 4
End With
With .Fill
.ForeColor.RGB = RGB(255, 0, 0)
.BackColor.RGB = RGB(255, 0, 0)
.Solid
End With
End With
.MarkerForegroundColor = RGB(255, 0, 0)
.MarkerBackgroundColor = RGB(255, 0, 0)
End With
Set objAxis = .Axes(Type:=xlCategory) 'Kategorie/X-Achse
With objAxis
.HasTitle = True
With .AxisTitle
.Text = "Test Diagramm"
With .Format.TextFrame2.TextRange.Font
.Size = 20
.Name = "Calibri"
End With
End With
.HasMajorGridlines = True
.TickLabels.NumberFormat = "DD.MM."
End With
End With
End Sub