Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Datenbeschriftung in Balkendiagramm

Forumthread: Datenbeschriftung in Balkendiagramm

Datenbeschriftung in Balkendiagramm
05.09.2024 11:19:01
reiner
Hallo Leute,

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

mit dem auf das wesentliche abgespeckten Programmcode in der Beispieldatei wird jeweils ein Balkendiagramm für das 1. / 2. Halbjahr 2025 erstellt.
Bitte nicht daran stören, das es unlogisch ist, bereits jetzt -im September 2024- Daten für das Jahr 2025 im Diagramm anzuzeigen, es geht mir nur um das Prinzip der Darstellung.
Der Programmcode in Zeile 49/50 des Moduls "DiagrammAmortisationErstellen" erstellt eine Datenbeschriftung innerhalb des 1. Balkens, 31.01.2025, bzw. des 1. und 7. Balkens bei Anwahl Jahr 2025.

Hieraus setllen sich nun folgende Fragen:
1. Wie kann die Datenbeschriftung in den anderen NOCH NICHT vorhandenen Balken (Monaten) -im Diagramm- mit dem Wert 0,000 kWh unterdrückt werden, solange keine Daten für die jeweiligen Monate vorliegen?
2. Kann die Datenbeschriftung mit einem z. B. gelben Texthintergrund zur besseren Lesbarkeit auf dem roten Balken hinterlegt werden?
3. Wie kann bei der Erstellung des Diagramms die Anzeige der Legende unterdrückt werden, ohne diese nachträglich -wie in Zeile 55 / 56- zu löschten?

mfg
reiner
Anzeige

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
VBA: Datenbeschriftung in Säulendiagramm
05.09.2024 12:47:13
Beverly
Hi Reiner,

schreibe deine Formeln in den Spalten AF:AQ nicht einfach (z.B.) =T64 sondern nach diesem Prinzip: =WENN(T64=0;#NV;T64), sodass nicht 0 sondern eben #NV in den Zellen steht - dann werden im Diagramm für die betreffenden Säulen auch keine Beschriftungen angezeigt.

Der Code für das Diagramm sieht - unter Berücksichtigung deiner anderen beiden Fragen - dann wie folgt aus:

Function Diagramm_Amortisation()

Dim chrDia As Chart
Application.ScreenUpdating = False
If Jahr = 2024 And frmAmortisation.opt2024_1.Value = True Or Jahr = 2025 And frmAmortisation.opt2025_1.Value = True Then
With Worksheets("Stromverbrauch " & Jahr)
Set rngBereich = Union(.Range(.Cells(4, 31), .Cells(9, 31)), .Range(.Cells(4, 35), .Cells(9, 35)))
End With
ElseIf Jahr = 2024 And frmAmortisation.opt2024_2.Value = True Or Jahr = 2025 And frmAmortisation.opt2025_2.Value = True Then
With Worksheets("Stromverbrauch " & Jahr)
Set rngBereich = Union(.Range(.Cells(10, 31), .Cells(15, 31)), .Range(.Cells(10, 35), .Cells(15, 35)))
End With
ElseIf Jahr = 2024 And frmAmortisation.opt2024.Value = True Or Jahr = 2025 And frmAmortisation.opt2025.Value = True Then
With Worksheets("Stromverbrauch " & Jahr)
Set rngBereich = Union(.Range(.Cells(4, 31), .Cells(15, 31)), .Range(.Cells(4, 35), .Cells(15, 35)))
End With
ElseIf frmAmortisation.opt2024_2025.Value = True Then
With Worksheets("Amortisation")
Set rngBereich = Union(.Range(.Cells(7, 8), .Cells(18, 8)), .Range(.Cells(7, 12), .Cells(18, 12)))
End With
End If
Set chrDia = Worksheets("Amortisation").ChartObjects.Add(770, 130, 550, 360).Chart 'ChartObjects.Add(Links, Oben, Breite, Höhe)
With chrDia
.Parent.Name = "Diagramm 1"
.SetSourceData Source:=rngBereich
.ChartType = xlColumnStacked
.HasTitle = True
.HasLegend = False ' keine Legende
If Jahr0 = 1 Then
.ChartTitle.Caption = "PV-Erzeugung im Jahr " & Jahr
ElseIf Jahr1 = 1 And frmAmortisation.opt2023_2024.Value = True Or Jahr1 = 1 And frmAmortisation.opt2024_2025.Value = True Then
.ChartTitle.Caption = "PV-Erzeugung im Zeitraum " & frmAmortisation.txtJahrgang.Text
ElseIf Jahr1 = 1 Then
.ChartTitle.Caption = "PV-Erzeugung im 1. Halbjahr " & Jahr
ElseIf Jahr2 = 1 Then
.ChartTitle.Caption = "PV-Erzeugung im 2. Halbjahr " & Jahr
End If
With .SeriesCollection(1)
.Interior.Color = vbRed
.Name = "PV-Erzeugung"
.ApplyDataLabels
.DataLabels.Format.BackColor = vbYellow ' Hintergrundfarbe Beschriftungslabel Gelb
End With
End With
End Function



Übrigens: Wenn du komplett alle Diagramme in einem Tabellenblatt löschen willst, musst du das nicht in einer Schleife machen - du kannst sie auf einen Ritt alle gleichzeitig löschen mif folgender Codezeile:

    If ActiveSheet.ChartObjects.Count > 0 Then ActiveSheet.ChartObjects.Delete



Bis später
Karin

Link zur Homepage: https://excel-inn.de/

Anzeige
AW: VBA: Datenbeschriftung in Säulendiagramm
05.09.2024 15:08:39
reiner
hallo Karin,

habe deine Änderungsvorschläge eingepflegt und bin voll und ganz zufrieden mit dem erzielten Ergebnis
vielen Dank für deinen Beitrag

reiner
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige