Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1396to1400
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
Inhaltsverzeichnis

Ausrichtung Datenbeschriftung Säulendiagramm

Ausrichtung Datenbeschriftung Säulendiagramm
11.12.2014 15:32:37
basti
Hallo,
bei einem gestapeltem Säulendiagramm möchte ich die Datenbeschriftung oberhalb der Säulen platzieren. Gibt es eine Möglichkeit das so zu machen, dass ich quasi sage: "nimm das obere Ende der Säule und addiere einen Wert"?
Momentan sieht das bei mir so aus:
Sub Datenbeschrift_hoch
ActiveSheet.ChartObjects("Diagramm 2").Activate
ActiveChart.SeriesCollection(2).Points(1).DataLabel.Select
Selection.Top = Selection.Top - 10
End Sub
Wenn der oberste Teil der Säule relativ groß ist, funktioniert das leider nicht optimal. Außerdem geht das Verhältnis oft verloren.
Momentan schreibe ich die oberen Befehle für jede einzelen Datenbeschriftung. Wie geht das, dass dieser für alle ausgeführt wird?

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Ausrichtung Datenbeschriftung Säulendiagramm
11.12.2014 16:12:36
basti
Hallo,
ich glaub meine erstes Problem hat sich erledigt, allerdings würde mich noch interessieren wie der Befehl ist um alle Datenpunkte gleichzeitig auszuführen

AW: Ausrichtung Datenbeschriftung Säulendiagramm
11.12.2014 17:19:50
Beverly
Hi Basti,
du musst in einer Schleife über alle Datenpunkte laufen - anders geht es nicht.
Übrigens - man kann dabei auf Select und Activate verzichten:
Sub beschriftungslabel_verschieben()
Dim chrDia As Chart
Dim intPunkt As Integer
Dim serReihe As Series
Set chrDia = ActiveSheet.ChartObjects("Diagramm 2").Chart
With chrDia
Set serReihe = .SeriesCollection(2)
With serReihe
For intPunkt = 1 To .Points.Count
.Points(intPunkt).DataLabel.Top = .Points(intPunkt).Top - 10
Next intPunkt
End With
End With
Set chrDia = Nothing
Set serReihe = Nothing
End Sub

Anzeige
AW: Ausrichtung Datenbeschriftung Säulendiagramm
16.12.2014 14:59:52
basti
Danke für deine Antwort,
leider bekomme ich bei der Funktion zwischen For und Next einen Fehler: "Objekt unterstützt diese Eigenschaft oder Methode nicht".
In Excel 2013 funktionierts glaube ich, ich benutze leider nur die 2007er VErsion.

AW: Ausrichtung Datenbeschriftung Säulendiagramm
16.12.2014 15:47:58
Beverly
Hi,
dann ändere diesen Teil:
= .Points(intPunkt).DataLabel.Top - 10


AW: Ausrichtung Datenbeschriftung Säulendiagramm
17.12.2014 09:28:21
basti
du meinst so?
Sub beschriftungslabel_verschieben()
Dim chrDia As Chart
Dim intPunkt As Integer
Dim serReihe As Series
Set chrDia = ActiveSheet.ChartObjects("Diagramm 2").Chart
With chrDia
Set serReihe = .SeriesCollection(2)
With serReihe
For intPunkt = 1 To .Points.Count
.Points(intPunkt).DataLabel.Top = .Points(intPunkt).DataLabel.Top - 10
Next intPunkt
End With
End With
Set chrDia = Nothing
Set serReihe = Nothing
End Sub

Dann bekomme ich den fehler "Überlauf"

Anzeige
AW: Ausrichtung Datenbeschriftung Säulendiagramm
17.12.2014 10:41:31
Beverly
Hi,
am Code selbst liegt es nicht - selbst mit Excel97 erhalte ich in meiner Beipsielmappe keine Fehlermeldung. Aber eventuell musst du die Zählvariable für die Schleife als Long deklarieren wenn du mehr als das für Integer vorgesehene Manximum an Datenpunkten in deinem Diagramm vorliegen hast.


AW: Ausrichtung Datenbeschriftung Säulendiagramm
17.12.2014 13:26:07
basti
Ok also sieht so aus als würde es doch funktionieren. Vielen Dank.
Wenn ich jetzt noch in den Code einfügen wollte, dass er die Labels erst in Ausgangsposition bringt (xlLabelPositionInsideBase ?) und dann erst die position verändert, wie müsste man das dann schreiben?

Anzeige
AW: Ausrichtung Datenbeschriftung Säulendiagramm
17.12.2014 13:37:19
Beverly
Hi,
lösche zuerst die Beschriftungslabel, zeige sie dann an und positioniere sie entsprechend - das kann man mit dem Makrorekorder aufzeichnen.


AW: Ausrichtung Datenbeschriftung Säulendiagramm
17.12.2014 14:57:34
basti
Hi,
dann hätte ich jetzt zwei Makros:
Sub BeschriftungAusgangsposition()
Dim ChrDia As Chart
Dim serReihe As Series
Set ChrDia = ActiveSheet.ChartObjects("Diagramm 2").Chart
With ChrDia
Set serReihe = .SeriesCollection(4)
With serReihe
.ApplyDataLabels
.DataLabels.Select
Selection.Position = xlLabelPositionInsideEnd
End With
Set serReihe = .SeriesCollection(3)
With serReihe
.ApplyDataLabels
.DataLabels.Select
Selection.Position = xlLabelPositionInsideEnd
End With
Set serReihe = .SeriesCollection(2)
With serReihe
.ApplyDataLabels
.DataLabels.Select
Selection.Position = xlLabelPositionInsideBase
End With
End With
End Sub

Sub BeschriftungVerschieben()
Dim chrDia As Chart
Dim intPunkt As Integer
Dim serReihe As Series
Set chrDia = ActiveSheet.ChartObjects("Diagramm 2").Chart
With chrDia
Set serReihe = .SeriesCollection(3)
With serReihe
For intPunkt = 1 To .Points.Count
.Points(intPunkt).DataLabel.Top = .Points(intPunkt).DataLabel.Top - 20
Next intPunkt
End With
Set serReihe = .SeriesCollection(4)
With serReihe
For intPunkt = 1 To .Points.Count
.Points(intPunkt).DataLabel.Top = .Points(intPunkt).DataLabel.Top - 20
Next intPunkt
End With
Set serReihe = .SeriesCollection(2)
With serReihe
For intPunkt = 1 To .Points.Count
.Points(intPunkt).DataLabel.Top = .Points(intPunkt).DataLabel.Top + 20
Next intPunkt
End With
End With
Set serReihe = Nothing
Set chrDia = Nothing
End Sub

Jetzt wäre es schön, wenn ich entweder das erste Makro ins zweite einbauen könnte oder ich beide gleichzeitig ausführen kann.
Wenn ich letzteres allerdings per:
Sub
Makro1
Makro2
End Sub probiere, wird eine Datenreihe falsch verschoben. Beide einzeln ausgeührt funktionieren.
Woran kann das liegen?

Anzeige
AW: Ausrichtung Datenbeschriftung Säulendiagramm
17.12.2014 19:08:03
Beverly
Hi,
woran das liegen kann? Keine Ahnung - ich sehe ja deine Mappe nicht, aber möglicherweise daran, dass du unterschiedliche Label-Positionen verwendest.
Ich würde es vom Prinzip her so versuchen (ungetestet):
Sub BeschriftungVerschieben()
Dim chrDia As Chart
Dim intPunkt As Integer
Dim serReihe As Series
Set chrDia = ActiveSheet.ChartObjects("Diagramm 2").Chart
With chrDia
Set serReihe = .SeriesCollection(3)
With serReihe
If .HasDataLabels = True Then .DataLabels.Delete
.ApplyDataLabels
.DataLabels.Positionxl = LabelPositionInsideEnd
For intPunkt = 1 To .Points.Count
.Points(intPunkt).DataLabel.Top = .Points(intPunkt).DataLabel.Top - 20
Next intPunkt
End With
Set serReihe = .SeriesCollection(4)
With serReihe
If .HasDataLabels = True Then .DataLabels.Delete
.ApplyDataLabels
.DataLabels.Positionxl = LabelPositionInsideEnd
For intPunkt = 1 To .Points.Count
.Points(intPunkt).DataLabel.Top = .Points(intPunkt).DataLabel.Top - 20
Next intPunkt
End With
Set serReihe = .SeriesCollection(2)
With serReihe
If .HasDataLabels = True Then .DataLabels.Delete
.ApplyDataLabels
.DataLabels.Position = xlLabelPositionInsideBase
For intPunkt = 1 To .Points.Count
.Points(intPunkt).DataLabel.Top = .Points(intPunkt).DataLabel.Top + 20
Next intPunkt
End With
End With
Set serReihe = Nothing
Set chrDia = Nothing
End Sub


Anzeige

301 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige