Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
988to992
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
988to992
988to992
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Trendlinien löschen

Trendlinien löschen
27.06.2008 22:19:00
Martin5924
Hallo,
ich erzeuge mir über VBA autmatisch ein Diagramm in welches ich anschließend die Trendlinie mit dem besten Bestimmtheitsmaß einfügebn lassen will.
Seither löse ich dieses Problem etwas umständlich indem ich alle möglichen Trendlinien erzeuge und das Bestimmtheitsmaß der vorhergehenden mit dem neuen vergleiche. Nachfolgend soll dann die schlechtere der beiden gelöscht werden:
Sieht so aus:
Zuerst eine lineare Trendlinie erstellen und das Bestimmtheitsmaß anzeigen
ActiveChart.SeriesCollection(c - 1).Trendlines.Add
ActiveChart.SeriesCollection(c - 1).Trendlines(1).DisplayRSquared = True

Wert in RQuadrat schreiben (z.B. "=R²=0,998") und auf eine Zahl kürzen
Rquadrat = ActiveChart.SeriesCollection(c - 1).Trendlines(1).DataLabel.Text
dbl_RQuadrat1 = Mid(Rquadrat, 5, Len(Rquadrat) - 3)

Die weiteren möglichen Trendlinien erstellen
For d = 1 To 4
ActiveChart.SeriesCollection(c - 1).Trendlines.Add
If d = 1 Then ActiveChart.SeriesCollection(c - 1).Trendlines(2).Type = xlLogarithmic
If d = 2 Then ActiveChart.SeriesCollection(c - 1).Trendlines(2).Type = xlExponential
If d = 3 Then ActiveChart.SeriesCollection(c - 1).Trendlines(2).Type = xlPolynomial
If d = 4 Then ActiveChart.SeriesCollection(c - 1).Trendlines(2).Type = xlPower

ActiveChart.SeriesCollection(c - 1).Trendlines(2).DisplayRSquared = True
Rquadrat = ActiveChart.SeriesCollection(c - 1).Trendlines(2).DataLabel.Text
Rquadrat = Mid(Rquadrat, 5, Len(Rquadrat) - 3)
dbl_RQuadrat2 = Rquadrat

Vergleich ob das neue besser ist als das vorhergehende, wenn ja wird das bessere übernommen
if dbl_RQuadrat1 < dbl_RQuadrat2 Then
dbl_RQuadrat1 = dbl_RQuadrat2
ActiveChart.SeriesCollection(c - 1).Trendlines(1).Delete
Else
ActiveChart.SeriesCollection(c - 1).Trendlines(2).Delete
End If
Next d

Das Problem ist nun das immer die erste Trendlinie gelöscht wird egal ob (1) oder (2) angegben wird. Was mich dann völlig geschafft hat war, dass ich über select die richtige Trendlinie anwählen konnte, bei nachfolgendem selection.delete wird trotz allem die erste gelöscht....
Ich hoffe dass mir von euch jemand helfen kann, vorab schon mal Danke für euer Bemühen!!
Gruß Martin

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Trendlinien löschen
28.06.2008 10:46:47
Beverly
Hi Martin,
versuche es mal so:

Dim inTyp1 As Integer
Dim inTyp2 As Integer
ActiveChart.SeriesCollection(c - 1).Trendlines.Add
ActiveChart.SeriesCollection(c - 1).Trendlines(1).DisplayRSquared = True
inTyp1 = xlLinear
Rquadrat = ActiveChart.SeriesCollection(c - 1).Trendlines(1).DataLabel.Text
'dbl_RQuadrat1 = Mid(Rquadrat, 5, Len(Rquadrat) - 3)
dbl_RQuadrat1 = CDbl(Mid(Rquadrat, 5, Len(Rquadrat) - 3))
For d = 1 To 4
ActiveChart.SeriesCollection(c - 1).Trendlines.Add
If d = 1 Then
ActiveChart.SeriesCollection(c - 1).Trendlines(2).Type = xlLogarithmic
inTyp2 = xlLogarithmic
ElseIf d = 2 Then
ActiveChart.SeriesCollection(c - 1).Trendlines(2).Type = xlExponential
inTyp2 = xlExponential
ElseIf d = 3 Then
ActiveChart.SeriesCollection(c - 1).Trendlines(2).Type = xlPolynomial
inTyp2 = xlPolynomial
ElseIf d = 4 Then
ActiveChart.SeriesCollection(c - 1).Trendlines(2).Type = xlPower
inTyp2 = xlPower
End If
ActiveChart.SeriesCollection(c - 1).Trendlines(2).DisplayRSquared = True
Rquadrat = ActiveChart.SeriesCollection(c - 1).Trendlines(2).DataLabel.Text
Rquadrat = Mid(Rquadrat, 5, Len(Rquadrat) - 3)
dbl_RQuadrat2 = CDbl(Rquadrat)
'dbl_RQuadrat2 = Rquadrat
If dbl_RQuadrat1 




Anzeige
AW: Trendlinien löschen
28.06.2008 12:19:00
Martin5924
Hallo Beverly,
danke erstmal für deine Antwort.
Leider funktioniert das ganze immer noch nicht. Es wird weiterhin die zuerst erstellte Trendlinie gelöscht... ich versteh das ganze so langsam nicht mehr.
Ich habe gestern noch ein Makro aufgezeichnet wo ich die zuletzt erstelllte Trendlinie gelöscht habe (Index (2)). Wenn ich dieses Makro wieder aufrufe wird dann die erste gelöscht.
Das Makro bestand ganz einfach nur aus:
ActiveChart.SeriesCollection(1).Trendlines(2).Delete
Als Index kann ich zwar 1 und 2 eingeben (bei zwei Trendlinien im Diagramm) gelöscht wird aber immer die gleiche.
Kann sich das irgend jemand erklären?
Gruß Martin
Gruß Martin

Anzeige
Andere Möglichkeit?
28.06.2008 13:21:00
Martin5924
Hallo zusammen,
scheinbar will es so gar nicht...
würde euch eigentlich noch eine andere Möglichkeit einfallen, zB. ohne die Trendlinie zu zeichnen? Die Formeln die ich seither gefunden habe wie:
=INDEX(RKP(B2:B8;LN(A2:A8);;WAHR);3;1) (Bestimmtheitsmaß der potenziellen Regression)
Liefern leider nicht das richtige Ergebnis.
ich wäre für eure Hilfe sehr dankbar,
Gruß Martin

AW: Trendlinien löschen
28.06.2008 22:47:46
Beverly
Hi Martin,
hast du das SP1 von Excel2007 installiert?
Bei mir funktioniert es mit dem Code gut. Ich habe noch eine zeitliche Unterbrechung eingebaut, weil er sonst nur im Einzelschrittmodus ausgeführt werden konnte. Schau dir mal die angehängte Beispielmappe an. Da ich die Bedingungen in deiner Arbeitsmappe nicht kenne, habe ich den Code natürlich an meine Bedingungen angepasst.
https://www.herber.de/bbs/user/53434.xlsm


Anzeige
Danke!
29.06.2008 13:41:19
Martin5924
Hallo Beverly,
Es funktioniert!
bis ich auf das Office SP1 gekommen wäre, hätte es wohl noch ein weilchen gedauert....
Jetzt muss ich nur noch hoffen, dass wir auch SP1 im Geschäft auf den Rechnern haben ;-)
Also vielen vielen Dank für die Hilfe und dein Bemühen!!!!!
Gruß Martin

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige