Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1872to1876
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

Diagramm Dynamisch über Maske

Diagramm Dynamisch über Maske
12.03.2022 10:05:34
Detlef
Hallo liebe Mitglieder,
ich habe mehrere, sehr umfangreiche, Tabellen in denen sich auch jeweils 4-8 Tabellenblätter befinden die immer unterschiedlich benannt sind. Über den relevanten Werten steht jeweils in Spalte "A" der Name zu dem die Daten gehören. Nun habe ich die Aufgabe bekommen, aus den Werten der Spalte "C" jeweils ein Diagramm zu erstellen. Diesen Code hier habe ich soweit (recht rudimentär) zum Laufen bekommen:

b=Inputbox("linke obere : rechte untere Ecke eingeben")
Charts.Add
ActiveChart.ChartType = xlLine
ActiveChart.SetSourceData Source:=Sheets("Tabelle1").Range(b), PlotBy :=xlColumns
ActiveChart.Location Where:=xlLocationAsObject, Name:="Tabelle1"
Meine Frage lautet nun, wie kann ich das Diagramm auch benennen, so dass ich den Namen der sich je in Spalte "A" befindet als Diagrammtitel mit aufgenommen bekomme?
Ich stelle mir das so vor:
Maske mit der Abfrage wo der Name in Spalte "A" steht und dann die Abfrage, von bis welchen Zeilen in Spalte "C" die Werte genommen werden sollen. Ein Traum (ist aber Luxus) wäre es nun noch, das Diagramm (evtl. mittels Zwischenablage) als Grafik in Word zu kopieren.
Ist so etwas möglich? Wenn es zu komplex ist, würde ich das aufgrund der vielen Daten auch als Auftragsprogrammierung vergeben wenn mir jemand sagen kann, wie ich das machen muss.
Hier noch eine Beispiel Datei:

https://www.herber.de/bbs/user/151732.xlsx

Ganz vielen Dank und ein schönes Wochenende
VG

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Diagramm Dynamisch über Maske
12.03.2022 10:47:56
Beverly
Hi,
deine Mappe lässt sich leider nicht herunterladen.
Vom Prinzip her kann man das so lösen:

Dim b
Dim C
b = InputBox("linke obere : rechte untere Ecke eingeben")
C = InputBox("Zelladresse Diagrammtitel")
If b  "" And C  "" Then
With Worksheets("Tabelle1").Shapes.AddChart2(227, xlLine)
.Chart.SetSourceData Source:=Worksheets("Tabelle1").Range(b), PlotBy:=xlColumns
.Chart.HasTitle = True
.Chart.ChartTitle.Caption = Worksheets("Tabelle1").Range(C)
End With
End If
Bis später
Karin

Anzeige
AW: Diagramm Dynamisch über Maske
12.03.2022 11:26:59
Detlef

https://www.herber.de/bbs/user/151734.xls
Hier ein neuer Upload, sorry, beim ersten Mal klappte es scheinbar nicht
#Karin, vielen Dank, leider kommt bei Deinem Script ein Fehler in Zeile"With Worksheets("Tabelle1").Shapes.AddChart2(227, xlLine)"
AW: Diagramm Dynamisch über Maske
12.03.2022 12:05:20
Detlef
Noch eine Bitte, wie kann man erreichen, dass das Script immer im aktiven Tabellenblatt läuft? (Also nicht "tabelle1") DANKE!
Rückfragen
12.03.2022 14:24:01
Beverly
Nun lädst du plötzliche eine xls-Datei hoch? Kein Wunder, dass der Code darin nicht funktioniert!
In den Versionen vor Excel2007 werden Diagramme anders erstellt - aber das kann man schließlich nicht ahnen, denn von der im 1. Beitrag hochgeladenen Mappe vom Typ XLSX und deiner Auswahl Excel-Version 2019 musste man davon ausgehen, dass es sich um eine Version NACH 2007 handelt.

Dim b
Dim C
b = InputBox("linke obere : rechte untere Ecke eingeben")
C = InputBox("Zelladresse Diagrammtitel")
If b  "" And C  "" Then
With ActiveSheet.ChartObjects.Add(0, 100, 300, 150).Chart
.SetSourceData Source:=Range(b), PlotBy:=xlColumns
.HasTitle = True
.ChartTitle.Caption = Range(C)
End With
End If
Rückfragen:
- sollen mehrere Diagramme erstellt werden?
- beginnen die Daten immer mit der Zeile Data No .......?
- der Diagrammtitel steht jeweils in der Zeile darüber in Spalte A?
- die Spalten B:E sind der Wertebereich des jeweiligen Diagramms?
Bis später
Karin

Anzeige
AW: Rückfragen
12.03.2022 18:09:03
Detlef
Hallo Karin,
ich habe Excel 2019, leider klappte es mit einer xlsx mit dem hochladen nicht:-(, daher habe ich als Beispiel die Datei als xls gespeichert. Ja es stimmt, alle Datensätze beginnen immer mit Data No, der Diagrammtitel steht immer in Spalte "A", B-E sind die Werte.
Es sind sehr viele Einzeldaten da für jede Straße eine Messung erfolgte,. Die Tabellenblätter sind dann jeweils die Stadtteile.
Meine Aufgabe ist es nun eben, zu jeder Messung(jede Straße) ein Diagramm zu machen und dieses dann in Word untereinander aufzuführen, von daher bin ich wirklich dankbar für die Hilfe!
Ich danke Dir ganz herzlich für Deine Hilfe und Unterstützung und ich finde es toll, dass hier so professionell geholfen wird.!
Vielen Dank und schönes Wochenende!
LG detlef
Anzeige
Lösungsvorschlag
12.03.2022 20:01:45
Beverly
Hi Detlef,
es ist nicht zielführend und außerdem sehr verwirrend, wenn du eine xls-Datei hochlädst aber tatsächlich Excel2019 verwendest. Speichere die Mappe das nächstemal im Format XLSM - Arbeitsmappe mit Makros, dann funktioniert auch der Code wie ich ihn zuerst gepostet hatte korrekt, weil eben die Codes der Versionen vor 2007 teilweise nicht mit denen der Versionen ab 2007 kompatibel sind.
Mit folgendem Code werden alle Diagramm eines Tabellenblattes erstellt und untereinander angeordnet:

Sub DiagrammeErstellen()
Dim rngZelle As Range
Dim strStart As String
Dim lngStart As Long
Dim lngEnde As Long
Dim chrDia As ChartObject
lngStart = 2
Set rngZelle = Columns(1).Find("Data No.", lookat:=xlWhole, after:=Range("A1"))
If Not rngZelle Is Nothing Then
strStart = rngZelle.Address
Do
lngEnde = rngZelle.End(xlDown).Row
With ActiveSheet.ChartObjects.Add(0, 0, 0, 0).Chart '0, 100, 300, 150
.SetSourceData Source:=Range(Cells(lngStart, 2), Cells(lngEnde, 6)), PlotBy:=xlColumns
.HasTitle = True
.ChartTitle.Caption = Cells(lngStart - 1, 1)
End With
Set rngZelle = Columns(1).FindNext(rngZelle)
lngStart = rngZelle.Row
Loop While rngZelle.Address  strStart
End If
' Diagrammgröße und Position einstellen
lngStart = 1
For Each chrDia In ActiveSheet.ChartObjects
With chrDia
.Height = Range("A1:A10").Height   '
Eventuell musst du die Größe der Diagramme und damit auch die Variable lngStart im unteren Teil des Codes entsprechend anpassen.
Bis später
Karin

Anzeige
AW: Lösungsvorschlag
13.03.2022 13:49:26
Detlef
Hallo Karin,
unglaublich, wo bitte lernt man so etwas? Ich bin begeistert! DANKE. Gestattest Du mir noch eine Frage; Könnte ich ggf. auch das Balkendiagramm in ein Liniendiagramm ändern oder wäre das kompliziert?
Nur wenn es keine Mühe macht, ich muss sowieso erst abchecken was gewünscht ist.
Schönen Sonntag noch und nochmals Danke!
LG
detlef
Ergänzung
13.03.2022 16:47:12
Beverly
Hi Detlef,
ersetze diese Zeile:

With ActiveSheet.ChartObjects.Add(0, 0, 0, 0).Chart
durch diese:

With ActiveSheet.Shapes.AddChart2(227, xlLine, 0, 0, 0, 0).Chart
Bei den Versionen nach 2007 kann man den gewünschten Diagrammtyp gleich bei der Erstellung festlegen - in den Versionen davor muss man das nachträglich zuweisen, so wie mit deinem Codeteil .ChartType = xlLine. Diese Zeile hatte ich übrigens vergessen, dadurch wurde der Standardtyp erstellt. Mit der neuen Codezeile ist dies - wie bereits erwähnt - gleich inbegriffen.
Übrigens: es war ein Säulen- und kein Balkendiagramm - oder stehen bei dir zuhause die Dachbalken senkrecht? ;-))
Wo man so etwas lernt? Ganz einfach: jahrelange Erfahrung. :-)
Bis später
Karin

Anzeige
AW: Ergänzung
14.03.2022 19:03:13
Detlef
Dank Karins Hilfe gelöst - vielen Dank!
oT: Link auf einen nanderen tread
12.03.2022 14:11:54
neopa
Hallo Detlef,
... sorry, ich hab keinen Beitrag zu Deiner Fragestellung, ich möchte nur Karin auf einen anderen thread aufmerksam machen.
Hallo Karin,
... Du hast doch sicherlich eine Lösung für die Zielstellung von Herbert in seinem thread hier: https://www.herber.de/forum/archiv/1872to1876/1874751_Formen_Verbindungspunkte.html. Sieh es Dir bitte mal an. Danke.
Gruß Werner
.. , - ...
AW: sollte natürlich: " anderen thread" lauten owT
12.03.2022 14:15:48
neopa
Gruß Werner
.. , - ...

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige