Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

VBA Beschriftung der X-Achse

2,404 views
Skip to first unread message

Christof Kluß

unread,
Sep 6, 2011, 6:37:17 AM9/6/11
to
Hallo,

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

Claus Busch

unread,
Sep 6, 2011, 7:03:59 AM9/6/11
to
Hallo 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

Christof Kluß

unread,
Sep 6, 2011, 9:18:41 AM9/6/11
to
Hallo Claus,

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

Claus Busch

unread,
Sep 6, 2011, 9:27:20 AM9/6/11
to
Hallo 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

Christof Kluß

unread,
Sep 7, 2011, 3:03:38 AM9/7/11
to
Hallo Claus,

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

0 new messages