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

Eindeutigen Namen für Excel-Diagramm im VBA vergeben

Forumthread: Eindeutigen Namen für Excel-Diagramm im VBA vergeben

Eindeutigen Namen für Excel-Diagramm im VBA vergeben
25.12.2024 14:14:06
MPunkt
Hallo Excel-Gemeinde!

Vorneweg und bevor ich es vergesse: Fröhliche Weihnachten!

Ich bin ein wenig am verzweifeln.
Mit nachfolgendem Code erstelle ich ein Diagramm (in ein Tabellenblatt eingebettet).


Sub Graph_erstellen()

Dim lngAKurve As Long
Dim wksA As Worksheet
Set wksA = Worksheets("Roh-Daten")

With wksA
lngAKurve = Range("Tabelle1!V2")
End With
With ActiveSheet.Shapes.AddChart2(-1, xlXYScatterSmoothNoMarkers).Chart

With .SeriesCollection.NewSeries
.Name = "PV-Leistung"
.XValues = wksA.Range(wksA.Cells(1, 2), wksA.Cells(lngAKurve, 2))
.Values = wksA.Range(wksA.Cells(2, 3), wksA.Cells(lngAKurve, 3))
.Border.Color = RGB(153, 204, 0)
End With
With .SeriesCollection.NewSeries
.Name = "AC-Bezug"
'.XValues = wks.Range(wksA.Cells(2, 2), wksA.Cells(lngAKurve, 2))
.Values = wksA.Range(wksA.Cells(2, 10), wksA.Cells(lngAKurve, 10))
.Border.Color = RGB(51, 102, 255)
End With
With .SeriesCollection.NewSeries
.Name = "AC-Eigenbedarf"
'.XValues = wks.Range(wksA.Cells(2, 2), wksA.Cells(lngAKurve, 2))
.Values = wksA.Range(wksA.Cells(2, 13), wksA.Cells(lngAKurve, 13))
.Border.Color = RGB(255, 10, 255)
End With
'USW weitere Kurven
End With

Set wksA = Nothing

End Sub

Der Code wird über einen Button angestoßen. Heißt also: es können x Diagramme erstellt werden.
Auch wenn nur eines benötigt wird...
Möchte ich nun das Diagramm in VBA weiter editieren/formatieren weiß ich nicht, ob es nun nur das eine Diagramm
gibt oder bereits 13 mal der Button gedrückt wurde.
Daher möchte ich dem Diagramm bei der Erstellung einen Namen zuweisen mit dem ich dann auch gezielt die Formatierung
erledigen kann.
Kurz: statt der fortlaufenden Nummerierung (Diagramm1 bis DiagrammXX) ein definierter Name.
Ich bin seit Tagen im Netz auf der Suche, fand aber bis jetzt keine passende Lösung.

Kann mir jemand von euch meinen Horizont diesbezüglich erweitern?
Das wäre allererste Sahne.

Besten Dank schon mal und Grüssle
MPunkt
Anzeige

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Eindeutigen Namen für Excel-Diagramm im VBA vergeben
25.12.2024 14:38:24
ralf_b
ich mach das z.b. so eine Objectvariable shp vom type Shape definieren und das erzeugte Chartobject der Variable zuweisen. Dann kannst du damit machen was geht.


dim shp as Shape
Set shp = sht.Shapes.AddChart2(242, xlXYScatterLinesNoMarkers, _
Left:=sht.Cells(1, 2).Left, _
Top:=sht.Cells(2, 1).Top)
in deinem code könnte man das so weiterführen (ungetestet)
With shp.Chart
......
end with

Anzeige
AW: Eindeutigen Namen für Excel-Diagramm im VBA vergeben
26.12.2024 12:58:36
schauan
Hallöchen,

es reicht in Deinem vorhandenen code schon eine zusätzliche Zeile, im Prinzip

With ActiveSheet.Shapes.AddChart2(-1, xlXYScatterSmoothNoMarkers).Chart

...
.Parent.Name = "AAA"
End With


Die hinter Deinem Wunsch steckende Logik sorgt aber schon dafür, dass weder ein doppelter noch ein ungültiger Name erzeugt wird?
Anzeige
Diagramm ansprechen
26.12.2024 09:00:46
Beverly
Hi,

wenn du immer das zuletzt erstellte Diagramm ansprechen möchtest, benötigst du keinen Namen - das geht dann nach diesem Prinzip:

    ' prüfen ob mindestens 1 Diagramm vorhanden ist

If ActiveSheet.ChartObjects.Count > 0 Then
'alles bezogen auf das zuletzt erstellte Diagramm
With ActiveSheet.ChartObjects(ActiveSheet.ChartObjects.Count).Chart
'....
End With
End With


Bis später
Karin

Link zur Homepage: https://excel-inn.de/
Anzeige
AW: Diagramm ansprechen
26.12.2024 20:21:07
MPunkt
Liebe Karin,
diesen Ansatz hatte ich mir auch schon überlegt.
Hätte ’schauan’ nicht schon die passende Antwort geliefert wäre ich Deinen Weg auch weitergegangen ;)

@schauan
Vielen lieben Dank für die entscheidende Zeile!
Manchmal liegt die Lösung so nah, dass man sie glatt übersieht!

@ralf_b
Auch Dir herzlichen Dank für Deinen Lösungsansatz.
Allerdings habe ich in Deinem Code die Syntax für die Namenszuweisung vermisst.
Daher nahm ich mir die Freiheit noch einen Tag zuzuwarten...

Euch allen dreien besten Dank für die Unterstützung und eure Zeit!
Schon jetzt einen guten Rutsch und alles Gute für 2025
Markus
Anzeige

Forumthreads zu verwandten Themen

Anzeige