Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: DataLabel Position

DataLabel Position
02.02.2007 16:12:09
Peter
Hallo,
ich möchte die Datenbeschriftung in Kreisdiagrammen per Makro positionieren. Für jedes Kreisdiagramm habe ich schon einen Code der eine andere Eigenschaft regelt. In diesen Code möchte ich gerne die Positionierung einbauen. Mein Versuch funktioniert leider nicht:
'Datenbeschriftungen in den einzelnen Kreisdiagrammen der Hauptdaten (Auswahl einzeln) werden ausgeblendet wenn

Sub Datenbeschriftung_Kreisdiagramm_Klasse()
Dim Werte As Range, Index As Integer
Dim ch As Chart
Set Werte = Sheets("Auswertung").Range("L77:L83")
Set ch = Sheets("Pflanzungs-Karte").ChartObjects("Diagramm 67").Chart
For Index = 1 To Werte.Cells.Count
With ch.SeriesCollection(1).Points(Index)
If Werte.Cells(Index) < 3 Then
.HasDataLabel = False
Else
.HasDataLabel = True
.DataLabel.Text = Werte.Cells(Index, 1) & "%"  'Anzeige in Prozent
End If
End With
Next Index
Set ch = Nothing
Set Werte = Nothing
'Datenbeschriftung positionieren
With ActiveSheet
.ChartObjects("Diagramm 67").DataLabel.Position = xlLabelPositionInsideEnd
End With
End Sub

Wie ist es richtig?
Grüße aus Berlin
Anzeige

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: DataLabel Position
02.02.2007 17:05:17
IngGi
Hallo Peter aus Berlin,
da fehlen ein "SeriesCollection(1)" und ein "s" (DataLabels):
.ChartObjects("Diagramm 67").SeriesCollection(1).DataLabels.Position = xlLabelPositionInsideEnd
Gruß aus Stuttgart
Ingolf
funktioniert noch nicht
02.02.2007 18:25:15
Peter
Hallo,
leider lauft der Code noch nicht.
Folgende Fehlermeldung kommt: "Objekt unterstützt diese Eigenschaft oder Methode nicht"
Der aktuelle Code:
'Datenbeschriftungen in den einzelnen Kreisdiagrammen der Hauptdaten (Auswahl einzeln) werden ausgeblendet wenn

Sub Datenbeschriftung_Kreisdiagramm_Klasse()
Dim Werte As Range, Index As Integer
Dim ch As Chart
Set Werte = Sheets("Auswertung").Range("L77:L83")
Set ch = Sheets("Pflanzungs-Karte").ChartObjects("Diagramm 67").Chart
For Index = 1 To Werte.Cells.Count
With ch.SeriesCollection(1).Points(Index)
If Werte.Cells(Index) < 3 Then
.HasDataLabel = False
Else
.HasDataLabel = True
.DataLabel.Text = Werte.Cells(Index, 1) & "%"  'Anzeige in Prozent
End If
End With
Next Index
Set ch = Nothing
Set Werte = Nothing
'Datenbeschriftung positionieren
With ActiveSheet
.ChartObjects("Diagramm 67").SeriesCollection(1).DataLabels.Position = xlLabelPositionInsideEnd
End With
End Sub

Wo könnte der Fehler liegen?
Grüße aus Berlin
Anzeige
AW: funktioniert noch nicht
02.02.2007 18:56:08
IngGi
Hallo Peter,
offenbar muss das Diagramm aktiviert sein, damit es funktioniert. Also:
Dim rng As Range
Set rng = ActiveCell
ActiveSheet.ChartObjects("Diagramm 67").Activate
ActiveChart.SeriesCollection(1).DataLabels.Position = xlLabelPositionInsideEnd
rng.Select
Das Drumherum mit dem "rng" dient dazu, nach der Aktion wieder die vorher aktive Zelle auf dem Tabellenblatt zu aktivieren, nicht damit es dann Probleme mit nachfolgendem Programmcode gibt.
Gruß Ingolf
Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

Datenbeschriftungen in Kreisdiagrammen per Makro positionieren


Schritt-für-Schritt-Anleitung

Um die Position von Datenbeschriftungen in Kreisdiagrammen über ein Makro zu steuern, folge diesen Schritten:

  1. Öffne Excel und gehe zu dem Arbeitsblatt, das dein Diagramm enthält.

  2. Öffne den VBA-Editor mit ALT + F11.

  3. Füge ein neues Modul hinzu: Rechtsklick auf "VBAProject (DeinWorkbookName)", dann "Einfügen" > "Modul".

  4. Kopiere den folgenden Code in das Modul:

    Sub Datenbeschriftung_Kreisdiagramm_Klasse()
       Dim Werte As Range, Index As Integer
       Dim ch As Chart
       Set Werte = Sheets("Auswertung").Range("L77:L83")
       Set ch = Sheets("Pflanzungs-Karte").ChartObjects("Diagramm 67").Chart
    
       For Index = 1 To Werte.Cells.Count
           With ch.SeriesCollection(1).Points(Index)
               If Werte.Cells(Index) < 3 Then
                   .HasDataLabel = False
               Else
                   .HasDataLabel = True
                   .DataLabel.Text = Werte.Cells(Index, 1) & "%"  'Anzeige in Prozent
               End If
           End With
       Next Index
    
       ' Datenbeschriftung positionieren
       ch.SeriesCollection(1).DataLabels.Position = xlLabelPositionInsideEnd
    End Sub
  5. Führe das Makro aus: Gehe zu Entwicklertools > Makros und wähle dein Makro aus.


Häufige Fehler und Lösungen

  • Fehler: "Objekt unterstützt diese Eigenschaft oder Methode nicht"

    • Lösung: Stelle sicher, dass das Diagramm aktiviert ist, bevor du die Position der Datenbeschriftungen änderst. Füge den folgenden Code hinzu, um das Diagramm zu aktivieren:
    ActiveSheet.ChartObjects("Diagramm 67").Activate
  • Fehler: Datenbeschriftungen werden nicht angezeigt

    • Lösung: Überprüfe, ob die Bedingung für die Anzeige der Datenbeschriftungen im Code korrekt ist. Es sollte sichergestellt sein, dass die Werte in der angegebenen Range korrekt sind.

Alternative Methoden

Eine alternative Möglichkeit, die Position der Datenbeschriftungen zu ändern, besteht darin, die Diagrammoptionen manuell anzupassen:

  1. Klicke mit der rechten Maustaste auf eine der Datenbeschriftungen im Diagramm.
  2. Wähle "Datenbeschriftungen formatieren".
  3. Ändere die Position unter "Optionen für Datenbeschriftungen".

Praktische Beispiele

Hier sind einige Beispiele, wie du die Position der Datenbeschriftungen in verschiedenen Diagrammtypen anpassen kannst:

  1. Kreisdiagramm: Verwende xlLabelPositionInsideEnd für eine klare Ansicht der Daten.
  2. Säulendiagramm: Du kannst xlLabelPositionAbove nutzen, um die Datenbeschriftungen über den Säulen anzuzeigen.
ActiveChart.SeriesCollection(1).DataLabels.Position = xlLabelPositionAbove

Tipps für Profis

  • Experimentiere mit verschiedenen Positionierungsoptionen wie xlLabelPositionOutsideEnd für eine bessere Lesbarkeit.
  • Verwende Schleifen, um mehrere Diagramme in einem einzigen Makro anzupassen, um Zeit zu sparen.
  • Stelle sicher, dass du die entsprechende Excel-Version verwendest, da einige Eigenschaften in älteren Versionen möglicherweise nicht unterstützt werden.

FAQ: Häufige Fragen

1. Wie kann ich die Position der Datenbeschriftungen für mehrere Diagramme gleichzeitig ändern?
Du kannst eine Schleife verwenden, um durch alle Diagramme in deinem Arbeitsblatt zu iterieren und die Position der Datenbeschriftungen zu ändern.

2. Welche Excel-Version benötige ich für diese Makros?
Diese Makros funktionieren in Excel 2010 und neueren Versionen. Achte darauf, dass die Diagrammfunktionen in älteren Versionen möglicherweise eingeschränkt sind.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige