mein Diagramm lᅵuft auf der X-Achse von 1.1.2007 bis 1.1.2010. Angezeigt
werden soll immer nur der 1. eines Monats. (Wenn genᅵgend Platz da ist.)
Beispiel
With ActiveChart.Axes(xlCategory)
.TickLabels.NumberFormat = "d. mmmm yy"
.TickLabels.Orientation = 45
.MajorUnit = 365 / 4
End With
Dabei wird aber z.B. der 31. Juli statt dem 1. August angezeigt. Habt
ihr eine Idee, wie ich die X-Achse "schᅵner" und ᅵbersichtlicher mit
Datums-Werten beschriften kᅵnnte?
Gruᅵ
Christof
Am Tue, 06 Sep 2011 12:37:17 +0200 schrieb Christof Kluß:
> Dabei wird aber z.B. der 31. Juli statt dem 1. August angezeigt. Habt
> ihr eine Idee, wie ich die X-Achse "schöner" und übersichtlicher mit
> Datums-Werten beschriften könnte?
gib explizit den 01.01.2007 als Starttag und den 02.01.2010 als Endtag
ein und setze das Hauptintervall auf Monate und wähle 3:
With ActiveChart.Axes(xlCategory)
.MinimumScale = 39083
.MaximumScale = 40179
.TickLabels.NumberFormat = "d. mmmm yy"
.TickLabels.Orientation = 45
.MajorUnitScale = xlMonths
.MajorUnit = 3
End With
Mit freundlichen Grüßen
Claus Busch
--
Win XP Prof SP2 / Vista Ultimate SP2
Office 2003 SP2 /2007 Ultimate SP2
danke! Die Achsenbeschriftung ist nun wie gewünscht. Leider scheint
jetzt aber ActiveChart.ChartType = xlXYScatter nicht mehr zu gehen.
Gibt es dafür eine Lösung? Im Diagramm soll eine Kurve zu sehen sein und
nicht nur Säulen o.ä.
Gruß
Christof
Am Tue, 06 Sep 2011 15:18:41 +0200 schrieb Christof Kluß:
> Leider scheint
> jetzt aber ActiveChart.ChartType = xlXYScatter nicht mehr zu gehen.
das PunktXY-Diagramm übernimmt die Werte so wie sie in der Tabelle
stehen 1:1.
Damit hat man den Vorteil, dass die Abstände zwischen den Datenpunkten
unterschiedlich sind, halt so wie in der Tabelle. Wenn du die Achse aber
wie oben formatieren möchtest, probiers mit einem Liniendiagramm.
Mit freundlichen Grüßen
Claus Busch
Am 06-09-2011 15:27, schrieb Claus Busch:
> Am Tue, 06 Sep 2011 15:18:41 +0200 schrieb Christof Kluß:
>> Leider scheint
>> jetzt aber ActiveChart.ChartType = xlXYScatter nicht mehr zu gehen.
>
> das PunktXY-Diagramm übernimmt die Werte so wie sie in der Tabelle
> stehen 1:1.
> Damit hat man den Vorteil, dass die Abstände zwischen den Datenpunkten
> unterschiedlich sind, halt so wie in der Tabelle. Wenn du die Achse aber
> wie oben formatieren möchtest, probiers mit einem Liniendiagramm.
genau das, was ich suche, aber leider weiterhin Probleme.
Ich habe zwei Dictionaries "SimRanges" und "ObsRanges", die zu einem
Namen einen Range liefern. Bei "xlXYScatter" klappt alles, "SimRanges"
werden als Linien und "ObsRanges" als Punkte angezeigt. Bei
"xlLineMarkers" werden leider nur die "SimRanges"-Linien, aber KEINE
Punkte angezeigt.
Habt ihr eine Idee, was ich falsch mache? Quelltext-Ausschnitt unten.
Gruß
Christof
Charts.Add
ActiveChart.ChartType = xlLineMarkers 'xlXYScatter
ActiveChart.Location WHERE:=xlLocationAsObject, Name:="Graph"
Dim i As Integer
Dim rng As Range
' warum hat ein neuer Chart Serien, die gelöscht werden
' müssen, um keinen "Dreck" im Diagramm zu haben?
While ActiveChart.SeriesCollection.Count > 0
ActiveChart.SeriesCollection(1).Delete
Wend
For Each Key In SimRanges.Keys
Set rng = SimRanges.Item(Key)
ActiveChart.SeriesCollection.Add Source:=rng, Rowcol:=xlColumns, _
SeriesLabels:=False, CategoryLabels:=True, Replace:=False
With ActiveChart.SeriesCollection(ActiveChart.SeriesCollection.Count)
.MarkerStyle = xlNone
.Border.LineStyle = xlContinuous
.Border.Weight = xlThin
.Border.ColorIndex = i + 2
.Name = Key
End With
i = i + 1
Next
i = 1
For Each Key In ObsRanges.Keys
Set rng = ObsRanges.Item(Key)
ActiveChart.SeriesCollection.Add Source:=rng, Rowcol:=xlColumns, _
SeriesLabels:=False, CategoryLabels:=True, Replace:=False
With ActiveChart.SeriesCollection(ActiveChart.SeriesCollection.Count)
.MarkerStyle = xlMarkerStyleCircle
.MarkerSize = 2
.Border.LineStyle = xlNone
.MarkerBackgroundColorIndex = i + 2
.MarkerForegroundColorIndex = i + 2
.Name = Key
End With
i = i + 1
Next
With ActiveChart.Axes(xlCategory)
.CategoryType = xlTimeScale
.BaseUnit = xlDays
.MajorUnit = xlMonths '.MajorUnit = 365.25 / 4
.TickLabels.NumberFormat = "d. mmmm yy"
.TickLabels.Orientation = 45 'xlUpward
.MinimumScale = PlotStartDate
.MaximumScale = PlotEndDate
.MinorUnitIsAuto = True
End With