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

VBA Datalabels lesbar machen an Kreisdiagrammen

Forumthread: VBA Datalabels lesbar machen an Kreisdiagrammen

VBA Datalabels lesbar machen an Kreisdiagrammen
21.01.2026 10:26:17
Nadine
Hallo Zusammen,

ich habe folgendes Problem. Die Datenbeschriftungen für die Kreisdiagramme lassen sich nicht mit einem Textumbruch oder "Textbox" Größe lesbar darstellen. Sie werden teilweise optisch abgeschnitten. Manuell kann ich die Boxen vergrößern und der Textinhalt ist super zu lesen.

Prozess ist der, dass die Diagramme komplett variabel sein sollen, anhand was in Spalte B und C steht, sowie die Inhalte der Segmente sich auf die Bewertung in den Zeilen 37:44 berufen sollen. Das klappt auch hervorragend.

Test A mit Behelf von Textboxen kam leider nicht zu dem Ergebnis. Diese waren nicht korrekt an den einzelnen Segmenten dran und haben sich bei der Anzahl der Segmente auch nicht richtig verhalten.

Test B habe ich mit einem 4. Diagramm im transparenten Hintergrund gebaut, was etwas größer ist als die anderen, was nur für die Datenbeschriftung herhalten soll, ansonsten keine weitere Funktion hat.

In der Testdatei hab ich das quick and dirty nachgebaut und meinen bisherigen VBA Code eingefügt.

https://www.herber.de/bbs/user/180064.xlsm


ich hoffe mir kann jemand helfen.

Vielen lieben Dank vorab.
Anzeige

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA Datalabels lesbar machen an Kreisdiagrammen
21.01.2026 11:19:36
Alwin Weisangler
Hallo Nadine,

es fehlt das Diagramm/Diagrammblatt je nach dem in deiner hochgeladenen Datei.

Gruß Uwe
AW: VBA Datalabels lesbar machen an Kreisdiagrammen
21.01.2026 13:46:04
MCO
Hallo Nadine!

Deinen Geschwindigkeitsboost hab ich mal ausgelagert:

Public Sub Build_Pizza_Report()

Dim ws As Worksheet
Dim calcMode As XlCalculation

If gIsBuildingPizza Then Exit Sub
gIsBuildingPizza = True

Set ws = ThisWorkbook.Worksheets("Dashboard")
RemovePreviousOutput ws

calcMode = Application.Calculation

On Error GoTo Cleanup
go_fast 1, calcMode 'ausgelagert

RenderPizzaOverlay ws
größenanpassung_pizza 'neu erstellt
Cleanup:
go_fast 0, calcMode'ausgelagert
gIsBuildingPizza = False

If Err.Number > 0 Then
MsgBox "Pizza-Fehler: " & Err.Description, vbCritical
End If
End Sub


Unterfunktion:
Sub go_fast(schneller As Boolean, berechnung As Variant)

With Application
.ScreenUpdating = Not (schneller)
.EnableEvents = Not (schneller)
.DisplayAlerts = Not (schneller)
.Calculation = IIf(schneller, xlCalculationManual, berechnung)
End With
End Sub


Sub größenanpassung_pizza()


Dim shp As Shape

For Each shp In ActiveSheet.Shapes
On Error Resume Next
shp.TextFrame2.AutoSize = msoAutoSizeShapeToFitText
On Error GoTo 0
Next shp

End Sub


Bei mir läufts, probier es mal aus.

Gruß, MCO
Anzeige
AW: VBA Datalabels lesbar machen an Kreisdiagrammen
21.01.2026 14:01:22
Nadine
Hallo MCO,

mega krass. Das klappt... könntest du nochmal über die Codes drüber schauen, zur Erstellung und Positionierung der Labels?

Das eine Label liegt genau auf bzw. hinter einem Diagramm und nicht rechts daneben. Auch das die Labels direkt an dem dazugehörigen Segment mittig sitzen und nicht am Segmentrand zu dem nächsten.

Danke dir ;-)
Anzeige
AW: VBA Datalabels lesbar machen an Kreisdiagrammen
22.01.2026 11:26:07
MCO
Guten Morgen!

Den Code hast du nicht selbst geschrieben und nie verstanden, oder? Warum gibtst du dann als Level "gut" an? Oder willst du nur Arbeit auslagern?

Im Code werden Label eingeblendet, bearbeitet und nachher wieder ausgeblendet: WARUM?!?
Die Textboxen, die du umpositioniert haben möchtest, werden schon bei Anlage positioniert und noch mindesten 2x umpositoniert!?! WARUM!?!?!

Das einfachste ist, sie ein drittes mal umzupositionieren. Das ist auch recht unkompliziert, da sie mit Pie_Label_1 und Pie_Label_2 benannt werden.

Übrigens wird nach dem Löschen der alten Darstellung wird eine neue erstellt. Soweit logisch.
Der erste Schritt bei Erstellen der neuen ist aber: Löschen der alten! WARUM!?!?

Die neue Position kannst du inkremental beeinflussen, also die neue Position abhängig von der alten.

also Neu_links = links - 150 und neu_höhe = höhe + 50

Der Code sieht dann so aus:
Public Sub Build_Pizza_Report()

Dim ws As Worksheet
Dim calcMode As XlCalculation

If gIsBuildingPizza Then Exit Sub
gIsBuildingPizza = True

Set ws = ThisWorkbook.Worksheets("Dashboard")
'RemovePreviousOutput ws

calcMode = Application.Calculation

On Error GoTo Cleanup
go_fast 1, calcMode

RenderPizzaOverlay ws
größenanpassung_pizza

With ws.Shapes("PieLabel_1")
'.Top = .Top + 20
.Left = .Left - 50 'hier die Zahlenwerte anpassen!
End With

With ws.Shapes("PieLabel_2")
'.Top = .Top + 50
.Left = .Left + 150 'hier die Zahlenwerte anpassen!
End With

Cleanup:
go_fast 0, calcMode
gIsBuildingPizza = False

If Err.Number > 0 Then
MsgBox "Pizza-Fehler: " & Err.Description, vbCritical
End If
End Sub


Gruß, MCO
Anzeige
AW: VBA Datalabels lesbar machen an Kreisdiagrammen
21.01.2026 11:38:55
Nadine
Hallo Uwe,

das Diagramm soll mit Klick auf den Button (Schaltfläche 1) erstellt werden.

In Spalte O bis R ist das Diagramm schon drin, zum anschauen. Wenn ich mir meine hochgeladene Datei aufrufe und runterlade, ist alles drin.

Liebe Grüße

Anzeige
Anzeige
Live-Forum - Die aktuellen Beiträge
Datum
Titel
14.05.2026 13:31:09
14.05.2026 09:50:42
13.05.2026 19:14:18