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

VBA Excel - Datenreihen bestimmen - in Dia einfüge

VBA Excel - Datenreihen bestimmen - in Dia einfüge
18.12.2016 20:11:48
Andre
Guten Abend.
Ich möchte aus einem Excel-Blatt Datenreihen(Spalte 1 bis 5) in 5 einzelne Diagramme einfügen.
Die Reihen werden automatisch gezählt, da nach einer Messreihe neue Daten hinzukommen können.
Anschließend werden die Spaltennummer durch eine For-Schleife gesetzt, dann sollen alle 5 Diagramme erstellt werden.
Leider kann ich in den Sourcebereich nicht meine Zaehler verwenden. Wenn ich die Zahlen eintrage geht es.
Das Tabellenblatt existiert so.
Sub Diagramm()
Dim intZaehler1 As Integer
Dim intCountRows as Interger
intCountRows = Cells(Rows.Count, 1).End(xlUp).Row
For intZaehler1 = 1 to 5
With ActiveChart.SeriesCollection.NewSeries
.Name = strDiagrammName(intZaehler1)
.SetSourceData Source:=Sheets("Tabelle1").Range(Cells(3, _
intZaehler1 + 29), Cells(intCountRows, intZaehler1 + 29))
End With
Next intZaehler
End Sub
Würde mich sehr freuen, wenn mir jemand weiterhelfen könnte.

12
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Unklare Fragestellung
19.12.2016 10:12:16
Beverly
Hi,
also dein Code soll nicht 5 einzelne Diagramme erstellen sondern dem 1 Diagramm 5 Datenreihen zuweisen - was soll denn nun tatsächlich passieren?


AW: Unklare Fragestellung - Fragestellung ist klar
20.12.2016 15:20:27
André
Hallo Karin,
vielen Dank für deine Meldung. Die Frage ist jedoch so gemeint wie sie geschrieben wurde. Ich habe 5 Spalten nebeneinander. In der Spalte sind aktuell 50 Messergebnisse. Nun möchte ich 5 einzelne Diagramm in einem Blatt - nebeneinander mit den Ergebnissen.
Grund, es gibt verschiedene Messbereiche und jedes Diagramm erhält die Standardabweichung und weitere Informationen.
Deswegen müssten dann - meiner Meinung nach 5 Diagramme (also Chart(1) bis Chart(5)) erstellt werden. Und für jedes Chart wird dann ja eine Spalte von x-Werten und eine Spalte von y-Werten benötigen.
Ich hoffe da gibt es eine flexible Lösung.
Viele Grüße André
Anzeige
AW: Unklare Fragestellung - Fragestellung ist klar
20.12.2016 21:51:07
Dieter
Hallo André,
wenn ich dein Problem richtig verstanden habe, dann kannst du das mit dem folgenden Programm machen:

Sub Diagramme_erstellen()
Dim breite As Single
Dim ch As Chart
Dim höhe As Single
Dim links As Single
Dim lngCountRows As Long
Dim oben As Single
Dim rng As Range
Dim sh As Shape
Dim spalteX As Long
Dim spalteY As Long
Dim wsD As Worksheet
Dim wsC As Worksheet
Set wsD = ThisWorkbook.Worksheets("Daten")
Set wsC = ThisWorkbook.Worksheets("Diagramme")
' Vorhandene Diagramme löschen
For Each sh In wsC.Shapes
sh.Delete
Next sh
spalteX = 29
lngCountRows = wsD.Cells(wsD.Rows.Count, "AC").End(xlUp).Row
oben = 20
links = 20
wsC.Activate
For spalteY = 30 To 34
Set rng = Union(wsD.Range(wsD.Cells(2, spalteX), wsD.Cells(lngCountRows, spalteX)), _
wsD.Range(wsD.Cells(2, spalteY), wsD.Cells(lngCountRows, spalteY)))
Set sh = wsC.Shapes.AddChart2(Style:=240, _
XlChartType:=xlXYScatterLines, _
Left:=links, _
Top:=oben)
links = links + 20 + sh.Width
sh.Select
ActiveChart.SetSourceData Source:=rng
Next spalteY
End Sub

Die Daten stehen im Blatt "Daten" und die Diagramme werden im Blatt "Diagramme" erzeugt.
Viele Grüße
Dieter
Hochgeladene Datei: https://www.herber.de/bbs/user/110139.xlsm
Anzeige
AW: Unklare Fragestellung - Fragestellung ist klar
21.12.2016 19:02:59
André
Hallo Dieter,
vielen Dank für Deine Hilfe. Ich weiß leider nicht ob meine Antwort von gestern angekommen ist. Ich habe dein Programm ausprobiert und es werden schon viele Teile erledigt. Das ist sehr gut. Was ich ändern konnte - ich habe immer abwechselnd eine x und y -Datenreihe. Aber das scheint jetzt zu gehen.
Was ich aus deinem Programm übernommen habe ist der folgende Code:

Dim intCountShapes As Integer
Dim shDiagramme As Shape
Dim wshArbeitsblatt As Worksheet
Set wshArbeitsblatt = ThisWorkbook.Worksheets("Diagramme")
For Each shDiagramme In wshArbeitsblatt.Shapes
intCountShapes = intCountShapes + 1
Next shDiagramme

Aber leider gibt es entweder die Fehlermeldung #9 oder #91 oder eine sehr lange Zahl. Bin aber der Meinung, dass es im Grunde dein Beispiel. Ich möchte damit die Diagramme im Blatt zählen lassen.
Hast du dafür noch eine Idee?
Eine andere Frage. Ich kenne von der SPS-Programmierung schon die Verwendung von ST. Habe es aber noch nie erlebt, dass IF-Schleifen angewendet werden, obwohl die Bedingungen nicht passen. Wieso macht vba das?
Viele Grüße und vielen Dank.
Gruß André
Anzeige
Diagrammobjekte Zählen/Löschen
21.12.2016 19:22:21
Beverly
Hi André,
zum Zählen brauchst du keine Schleife:
MsgBox ActiveSheet.ChartObjects.Count

Auch nicht zum Löschen von allen Diagrammen:
If ActiveSheet.ChartObjects.Count > 0 Then ActiveSheet.ChartObjects.Delete



AW: Diagrammobjekte Zählen/Löschen
22.12.2016 16:51:04
André
Hallo Karin,
sehr schön. Vielen Dank für diesen Tipp.
Viele Grüße
André
AW: Unklare Fragestellung - Fragestellung ist klar
21.12.2016 21:25:20
Dieter
Hallo André,
mit dieser Schleife zählst du nicht die Diagramme, sondern sämtliche Shape-Objekte. Das sind verschiedenste Objekte, die auf die Excel-Oberfläche geklebt werden (Bilder, Grafiken, Steuerelemente, Diagramme, Kommentare, Textfelder).
Karin hat ja einen Vorschlag gemacht, um die Diagramme zu zählen und sehr elegant auch zu löschen.
Deine Frage zu den "IF-Schleifen, bei denen Bedingungen nicht passen" habe ich nicht verstanden. Könntest du das noch präzisieren?
An meinem Programmvorschlag gefielen mir "Select" und "ActiveChart" nicht, ich konnte das aber nicht auf die Schnelle eliminieren. Jetzt habe ich das geschafft und auch den Löschvorschlag von Karin übernommen. Mein Programm sieht jetzt folgendermaßen aus:

Sub Diagramme_erstellen()
Dim breite As Single
Dim cho As Object
' Wenn cho als ChartObject deklariert wird, dann funktioniert unten die Set-Anweisung nicht!
Dim höhe As Single
Dim links As Single
Dim lngCountRows As Long
Dim oben As Single
Dim rng As Range
Dim sh As Shape
Dim spalteX As Long
Dim spalteY As Long
Dim wsD As Worksheet
Dim wsC As Worksheet
Set wsD = ThisWorkbook.Worksheets("Daten")
Set wsC = ThisWorkbook.Worksheets("Diagramme")
' Vorhandene Diagramme löschen
If wsC.ChartObjects.Count > 0 Then
wsC.ChartObjects.Delete
End If
spalteX = 29
lngCountRows = wsD.Cells(wsD.Rows.Count, "AC").End(xlUp).Row
oben = 20
links = 20
For spalteY = 30 To 34
Set rng = Union(wsD.Range(wsD.Cells(2, spalteX), wsD.Cells(lngCountRows, spalteX)), _
wsD.Range(wsD.Cells(2, spalteY), wsD.Cells(lngCountRows, spalteY)))
Set cho = wsC.Shapes.AddChart2(Style:=240, _
XlChartType:=xlXYScatterLines, _
Left:=links, _
Top:=oben)
links = links + 20 + cho.Width
cho.Chart.SetSourceData Source:=rng
Next spalteY
wsC.Activate
End Sub

Ist für deine Anwendung nicht so wesentlich, aber ich versuche, die genannten und verwandte Begriffe zu vermeiden.
Bei weiteren Fragen ist sicherlich eine Beispielmappe hilfreich, wie Karin schon gesagt hat. Die Daten können verändert und/oder anonymisiert sein.
Viele Grüße
Dieter
Anzeige
AW: Unklare Fragestellung - Fragestellung ist klar
22.12.2016 17:00:54
André
Hallo Dieter,
vielen Dank für diesen Arbeitsaufwand. Versuche es morgen auszuprobieren.
Melde mich dann auf jeden Fall noch mal.
Viele Grüße
André
Unklare Fragestellung da zweideutig...
20.12.2016 23:03:12
Beverly
Hi André,
...und zwar deshalb, weil du einerseits geschrieben hast, dass du 5 Diagramme erstellen willst, dein Code aber besagt, dass du 1 Diagramm 5 Datenreihen zuweist. Das ist aber nun ja geklärt - 5 Diagramme mit je 1 Datenreihe.
Du schreibst, dass die Diagramme besonders aufbereitet werden sollen (Standardabweichung und vlt. noch anderes?), also kein so 0-8-15 Diagramm wie das automatisch geschieht. Dann würde ich dir generell eine andere Vorgehensweise empfehlen: erstelle 1 Diagramm von Hand nach deine Wünschen zur Formatierung, kopiere dieses Diagramm und passe einfach die Wertebereiche an - das Kopieren und Anpassen der Wertebereiche kann dann per VBA erfolgen.


Anzeige
AW: Unklare Fragestellung da zweideutig...
20.12.2016 23:58:41
André
Hallo Karin,
ja genau - das ist meine Idee. Also eine Darstellung im Diagramm die nicht ganz so einfach (ohne tricksen) die Ergebnisse wiedergibt.
Und sobald ich es schaffe ein Diagramm zu erstellen bin ich für die Kopie.
Aber ich habe es noch nicht raus, Variablen die automatisch gezählt werden als Bereich übernehmen zu können.
Mal ganz dumm. Ich habe eine Spalte für die x-Achse und eine Spalte für die y-Achse,
darunter x und y Wert für den Mittelwert, darunter den Bereich der Standardabweichung,
darunter noch Endstriche für die Standardabweichung und darunter noch Zeilen für eine zweite Darstellung der Messergebnisse (links ist mg/m³ und rechts Pi) da ein 1 Pi = 30 mg/m² ist das notwendig.
Wenn ich das in ein Code habe kann ich das fpr den Rest kopieren.
Wie gesagt, die automatische Zählung der For-Schleifen und Reihenanzahlbestimmung wollen nicht zusammen arbeiten.
Ich habe von Dieter schon einen guten Ansatz, der wählt dann aber alles.
Hast du eine Idee?
Viele Grüße
André
Anzeige
AW: Unklare Fragestellung da zweideutig...
21.12.2016 09:58:09
Beverly
Hi André,
eine hochgeladene Beispielmappe mit dem einen von Hand erstellten "Standarddiagramm" mit den zugewisenen Wertebereichen und "Extras" würde die Hilfe wesentlich vereinfachen.
Wie schon geschrieben: das "Standarddiagramm" würde ich von Hand erstellen, denn wenn du es mit VBA erstellen willst, dann bleibt dir sowieso nicht anderes übrig, als die Arbeitsschritte mit dem Makrorekorder aufzuzeichnen und da das ganze sicher nur einmalig und nicht stänig neu ausgeführt werden soll (nehme ich an), ist der Aufwand m.E. überhaupt nicht gerechtfertigt.
Wenn du ein Diagramm erstellst, gibt es 2 Wege für die Wertezuweisung:
1. mit SetSourceData für das GESAMTE Diagramm oder 2. ein leeres Diagramm erstellen und in einer Schleife die Datenreihen einzeln zuweisen (so wie bei Dieter).


Anzeige
AW: Unklare Fragestellung da zweideutig...
21.12.2016 19:05:41
André
Hallo Karin.
Mit der Hilfe von Dieter und heute noch den ganzen Tag tapfer probieren hatte ich endlich Glück.
Ich kann jetzt zwei Datenreihen einlesen. Benötige zwar noch eine Schleifen, aber wenn es einmal fertig ist - spart es Zeit und Geduld.
Vielen Dank auch für deine Hilfe.
Viele Grüße
André

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige