Anzeige
Archiv - Navigation
1728to1732
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

Diagrammerstellung mit VBA: zu viele Datenreihen werden erstellt

Diagrammerstellung mit VBA: zu viele Datenreihen werden erstellt
20.12.2019 17:56:55
NicSteel
Liebe Profis, ich habe mal wieder ein Problem und hoffe auf eure Hilfe.
Die

Function "DiagrammErstellen"  wird innerhalb eine Makros aufgerufen.
Vorher wurde in der Makro-Laufzeit das Array "WertePaare" befüllt.
Aus den Werten dieses Arrays soll ein Diagramm neu erstellt werden.
Das Problem besteht darin, dass nicht -wie gewünscht- EINE Datenreihe
erstellt wird, sondern DREI (davon eine ganz leer, eine besteht aus den
x-Werten und eine aus den y-Werten).
Was ist am Code falsch ? Zu meinem Code: Ich bin KEIN Profi und achte
eher auf Lesbarkeit. Daher wird den Profis wahrscheinlich beim Lesen oft
"Das Messer in der Tasche aufgehen" wenn sie das lesen - sorry dafür schon jetzt.
Vielen Dank schon mal im Voraus,
NicSteel

Function DiagrammErstellen()
Dim cDia As Chart
Dim shBlatt As Sheets
Dim sDiaName As String
Const sName As String = "Wertpaare"
Dim i As Integer
Dim WertePaareX() As Variant
Dim WertePaareY() As Variant
Dim sReihe1Name As String
Dim rReihe1xWerte As Range
Dim rReihe1yWerte As Range
'Tabellenblatt neu generieren für die Daten des Diagramms
'Diagramm kann keine "großen" Arrays als Values und xValues aufnehmen
'altes Sheet mit Diagramm löschen
If SheetExists(sName) Then
Application.DisplayAlerts = False
Sheets(sName).Delete
Application.DisplayAlerts = True
End If
'neues Sheet einfügen
ThisWorkbook.Worksheets.Add.Name = sName
'in neues Sheet das Werte-Array einfügen
ThisWorkbook.ActiveSheet.Cells(1, 1) = "Zeit"
ThisWorkbook.ActiveSheet.Cells(1, 2) = "Wert"
ReDim WertePaareX(1 To AnzahlWertePaare)
ReDim WertePaareY(1 To AnzahlWertePaare)
For i = 1 To AnzahlWertePaare
WertePaareX(i) = WertePaare(i, 1)
WertePaareY(i) = WertePaare(i, 2)
Next i
For i = 1 To AnzahlWertePaare
ThisWorkbook.ActiveSheet.Cells(i + 1, 1) = WertePaareX(i)
ThisWorkbook.ActiveSheet.Cells(i + 1, 2) = WertePaareY(i)
Next i
'Reihe1 festlegen
sReihe1Name = "Wert"
Set rReihe1xWerte = ThisWorkbook.ActiveSheet.Range(Cells(2, 1), Cells(AnzahlWertePaare + 1, 1))
Set rReihe1yWerte = ThisWorkbook.ActiveSheet.Range(Cells(2, 2), Cells(AnzahlWertePaare + 1, 2))
'neues Diagramm erstellen
sDiaName = sName
Set cDia = Charts.Add
Set cDia = cDia.Location(Where:=xlLocationAsObject, Name:=sName) ' Ort
With cDia
.ChartType = xlXYScatterSmoothNoMarkers
.HasTitle = True
.ChartTitle.Text = sDiaName
.SeriesCollection.NewSeries
With ActiveChart.FullSeriesCollection(1)
'HIER PASSIERT DER UNSINN !!!
.Name = sReihe1Name
.Values = rReihe1yWerte
.XValues = rReihe1xWerte
End With
.SetElement (msoElementLegendTop)
End With
End Function

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Diagrammerstellung mit VBA: zu viele Datenreihen werden erstellt
20.12.2019 18:43:24
onur
"HIER PASSIERT DER UNSINN !!!" - liegt wohl an dem Unsinn, den du programmiert hast.
Poste mal die Datei, der Code alleine bringt nix, da hier Keiner deine Datei nachbauen möchte, nur um dir helfen zu können.
AW: Diagrammerstellung mit VBA: zu viele Datenreihen werden erstellt
20.12.2019 18:58:09
NicSteel
Lieber onur,
warum bist du denn gleich so unfreundlich zu mir ... ? Ich habe dir doch gar nichts getan!
Ich möchte lediglich wissen, warum 3 Datenreihen erzeugt werden, anstatt einer! Der Fehler liegt nicht in der Datei/Projekt, sondern in dieser function.
Das Problem besteht darin, dass zum Zeitpunkt der Diagrammerstellung einfach die vorhandenen Daten der Spalten A und B ins Diagramm geschrieben werden und deshalb das "FullSeriesCollection(1)" nicht mehr passt. Ich hatte gehofft, dass genau DU für diese Frage der richtige Ansprechpartner wärst !
Vielen Dank aber für deine wertvolle Lese- und Antwortzeit.
NicSteel
Anzeige
Meinen Beitrag hast du gelesen? - o.w.T.
20.12.2019 19:04:23
Beverly


AW: Diagrammerstellung mit VBA: zu viele Datenreihen werden erstellt
20.12.2019 19:05:16
onur
Lieber NicSteel,
Ich bin nicht böse, nur ehrlich. VBA produtiert nun mal nur Unssinn, wenn man Unsinn programmiert hat.
Ich habe zwar einiges Ungereimtes gesehen, aber wie soll ich helfen, wenn ich, um deine Funktion auf Herz und Nieren zu prüfen, deine Datei nachbauen müsste. Abgesehen davon, dass etliche Variablen, die du benutzt, in der Funktion weder dimensioniert noch befüllt werden. Evtl geschieht das woanders, aber ich habe nur den Code der Funktion.
Also sei nicht eingeschnappt sondern poste die Datei.
Anzeige
AW: Diagrammerstellung mit VBA: zu viele Datenreihen werden erstellt
20.12.2019 18:53:25
Beverly
Hi,
ohne deinen Code genauer betrachtet zu haben mal ein genereller Hinweis: wird ein Diagramm erstellt (gleichgültig ob von Hand oder per VBA) während sich der Cursor in einer Zelle mit Inhalt befindet, werden die Daten aus allen umliegenden (und zusammenhängenden) Zellen automatisch ins Diagramm aufgenommen. Wenn man also ein leeres Diagramm erstellen und diesem dann später (eine) Datenreihe(n) zuweisen will, muss man darauf achten, dass sich entweder der Cursor in einer leeren Zelle befindet, oder man löscht erst alle vorhandenen (und unerwünschten) Datenereihen, erstellt danach eine neue Datenreihe und weist dieser dann die gewünschten Werte zu. Man kann allerdings beim Löschen auch 1 Datenerihe belassen und weist dieser dann die Werte zu.


Anzeige
AW: Diagrammerstellung mit VBA: zu viele Datenreihen werden erstellt
20.12.2019 19:07:10
NicSteel
Hallo Beverly,
GENAU das ist es! Habe gerade hilfsweise mit "select" eine Zelle angewählt, bevor das Diagramm erstellt wird - und jetzt funktioniert es.
Das ist eben der Unterschied zwischen RICHTIGEN Profis -wie dir- und "Nur-Rum-Motzern" !
Und mal wieder hast DU mir geholfen (vor ca. 2Jahren bereits schon einmal).
Du bist einfach toll und große Klasse !!!
Vielen lieben Dank,
NicSteel
AW: Diagrammerstellung mit VBA: zu viele Datenreihen werden erstellt
20.12.2019 19:16:10
onur
Ich muss mich wohl bei die entschuldigen - es lag ja offensichtlich nicht an deinem Code, sondern an VBA, der nur Blödsinn produziert.
Eine leere Zelle zu selektieren...
20.12.2019 19:27:43
Beverly
Hi,
...ist zwar eine Möglichkeit, aber man sollte besser die andere Variante - das Löschen zufällig erstellter Datenreihen - verwenden.
Ich erstelle ein Diagramm per VBA z.B. nach diesem Prinzip:
Dim cDia As Chart
Dim lngZaehler As Long
Dim sDiaName As String
sDiaName = "MeinDiagramm"
Set cDia = ThisWorkbook.Worksheets("Tabelle1").Shapes.AddChart.Chart
With cDia
.ChartType = xlXYScatterSmoothNoMarkers
If .SeriesCollection.Count > 0 Then
For lngZaehler = .SeriesCollection.Count To 1 Step -1
.SeriesCollection(lngZaehler).Delete
Next lngZaehler
End If
.HasTitle = True
.ChartTitle.Text = sDiaName
With .SeriesCollection.NewSeries
.Name = "Name"
.Values = Range("A1:A10")
.XValues = Range("B1:B10")
End With
.SetElement (msoElementLegendTop)
End With


Anzeige
AW: Eine leere Zelle zu selektieren...
20.12.2019 20:20:08
NicSteel
Hallo Beverly,
na DAS ist ja genial: Anstatt rumzuheulen wegen bereits vergebener "SeriesCollection-Nr" einfach die Dinger zählen und löschen ... Da kommt doch keiner drauf (wegen der komplizierten if-Konstruktion).
Dank dir !
Jetzt kann ich nämlich auch weitere "SeriesCollections" (pl) einfügen, ohne vorher zu wissen wie viele es werden.
Letzte Frage an dich: Warum ist VBA unfähig, große Arrays als Values/XValues für Diagramme zu verwenden?
Viele Grüße und viele Danke,
NicSteel
AW: Eine leere Zelle zu selektieren...
20.12.2019 20:33:58
Beverly
Hi,
es gab eine Grenze, wie viele Zeichen eine Datenreihe umfassen durfte - das waren 255 Zeichen. Diese Grenze wurde allerdings in den neueren Versionen aufgehoben.
Wieviele Zeichen, einschließlich Dezimalzeichen und Trennzeichen zwischen den Werten, sind es denn, die Probleme bereiten?


Anzeige

302 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige