Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Diagramm mit VBA
#1
Hallo liebe Forenmitglieder,
ich lerne gerade VBA und arbeite daher viel mit dem Aufzeichnungstool. So habe ich auch eine Diagrammerstellung aufgezeichnet, habe jetzt aber Probleme damit.

Anmerkung: Der Code hat mir speziell für das aktive Blatt ("Tabelle1") das Diagramm erstellt. Ich möchte das Makro aber später auf weitere Tabellenblätter anwenden und habe daher den Namen verallgemeinert. Ich denke, dass es funktioniert hat, aber vielleicht hängt das mit den Problemen zusammen.

Problem 1: Ich habe das Makro ausgeführt und es hat funktioniert. Als ich es später nochmal versucht habe, hat er plötzlich alle Spalten ausgewählt und mir dafür jeweils eine Kurve angezeigt. Auch wenn ich ganz ohne Makro ein neues Diagramm eingefügt habe, hatte ich ohne, dass im Dokument etwas markiert war, schon Kurven eingezeichnet. Über ein Schließen von Excel konnte ich das Problem beheben, aber es tritt nach einiger Zeit wieder auf. Was mache ich falsch?

Problem 2: Mit dem letzten Befehl lasse ich mir die Gleichung der Tangente auslesen. Das funktioniert leider nur, wenn ich das Diagramm nochmal manuell aktiviere. Wie kann ich um das Select drumherum kommen, damit das Diagramm weiterhin aktiviert ist oder das Diagramm aktivieren ohne den konkreten Namen zu nennen?

Ich hoffe, ich konnte meine beiden Probleme erläutern und jemand weiß Rat.
Vielen Dank im Voraus und ein schönes Restwochenende
Blesbie


Code:
'Diagramm erstellen
ActiveSheet.Shapes.AddChart2(240, xlXYScatterSmoothNoMarkers).Select
    ActiveChart.SeriesCollection.NewSeries
'Erstellen Kurve "Längenänderung". Auswahl der Werte Beginn bei Kraft 5 N, Ende am Ende der Werte
    ActiveChart.FullSeriesCollection(1).Name = _
    "=""Längenänderung fein"""
    ActiveChart.FullSeriesCollection(1).XValues = _
    ActiveSheet.Range("F" & Range("O18").Value & ":F" & Range("O17").Value)
    ActiveChart.FullSeriesCollection(1).Values = _
    ActiveSheet.Range("D" & Range("O18").Value & ":D" & Range("O17").Value)
'Erstellen Kurve "Längenänderung". Auswahl der Werte Beginn bei Kraft 5 N, Ende nach 2000 Werten
  
    ActiveChart.FullSeriesCollection(2).Name = _
    "=""E-Modul"""
    ActiveChart.FullSeriesCollection(2).XValues = _
    ActiveSheet.Range("F" & Range("O18").Value & ":F" & Range("O18").Value + 2000)
    ActiveChart.FullSeriesCollection(2).Values = _
    ActiveSheet.Range("D" & Range("O18").Value & ":D" & Range("O18").Value + 2000)
'Legende einfügen
    ActiveChart.SetElement (msoElementLegendRight)
'Trendlinie für E-Modulkurve anlegen. Fortsetzen um 1mm
    ActiveChart.FullSeriesCollection(2).Trendlines.Add
    ActiveChart.FullSeriesCollection(2).Trendlines(1).Select
    Selection.Forward = 1
    Selection.DisplayEquation = True
'Trendlinienformel auslesen lassen. Ergebnis in O3
    Range("O3").Select
    ActiveCell.Formula = ActiveChart.SeriesCollection(2).Trendlines(1).DataLabel.Text
Antwortento top
#2
Hallo Blesbie,

nachdem du bisher noch keine Antwort bekommen hast, denke ich, solltest du deine Datei zur Verfügung stellen, damit potentielle Helfer sich ein Bild von deinem Problem machen können.

Ich selbst kann dir leider nicht helfen.
Gruß Günter
Misserfolg ist eine Chance, es beim nächsten Mal besser zu machen.
(Henry Ford) www.sprueche-zum-nachdenken.eu
Antwortento top
#3
Hallo,

rein theoretisch solltest Du es mal anstatt so

Code:
'Trendlinienformel auslesen lassen. Ergebnis in O3
     Range("O3").Select
     ActiveCell.Formula = ActiveChart.SeriesCollection(2).Trendlines(1).DataLabel.Text

mit dieser Version

Code:
'Trendlinienformel auslesen lassen. Ergebnis in O3
     Range("O3").Formula = ActiveChart.SeriesCollection(2).Trendlines(1).DataLabel.Text

versuchen.
Gruß Stefan
Win 7 / Office 2007
Antwortento top
#4
Danke Stefan, funktioniert besser als meine Variante, weil nicht erst die Fehlermeldung kommen muss, damit ich das Diagramm anwählen kann, sondern es gleich im Vorfeld angeklickt werden kann.

Das andere Problem ist zwar nicht gelöst, aber irgendetwas hat es mit einem Doppelklick auf sich. Wenn ich den vorher mache (und dennoch nichts markiert ist), spukt er das komische Diagramm aus. Also einfach nicht mehr doppelklicken und alles ist gut.
Antwortento top
#5
Hej ihr, ich muss leider doch nochmal wegen meines Diagramms schreiben. Ich will ein Diagramm mit 2 Kurven erstellen, das zweite bekommt auch noch eine Trendlinie. Aber irgendetwas scheint im Code nicht zu stimmen, die zweite Kurve wird nicht angezeigt und ich müsste debuggen. Habe aber keine Ahnung was nicht stimmt. Sieht jemand etwas?

(05.10.2014, 17:31)Blesbie schrieb:
Code:
'Diagramm erstellen
ActiveSheet.Shapes.AddChart2(240, xlXYScatterSmoothNoMarkers).Select
    ActiveChart.SeriesCollection.NewSeries

'Erstellen erste Kurve
    ActiveChart.FullSeriesCollection(1).Name = _
    "=""Längenänderung fein"""
    ActiveChart.FullSeriesCollection(1).XValues = _
    ActiveSheet.Range("F" & Range("O18").Value & ":F" & Range("O17").Value)
    ActiveChart.FullSeriesCollection(1).Values = _
    ActiveSheet.Range("D" & Range("O18").Value & ":D" & Range("O17").Value)

'Erstellen zweite Kurve
    ActiveChart.FullSeriesCollection(2).Name = _
    "=""E-Modul"""
    ActiveChart.FullSeriesCollection(2).XValues = _
    ActiveSheet.Range("F" & Range("O18").Value & ":F" & Range("O18").Value + 2000)
    ActiveChart.FullSeriesCollection(2).Values = _
    ActiveSheet.Range("D" & Range("O18").Value & ":D" & Range("O18").Value + 2000)
'Legende einfügen
    ActiveChart.SetElement (msoElementLegendRight)
'Trendlinie für E-Modulkurve anlegen. Fortsetzen um 1mm
    ActiveChart.FullSeriesCollection(2).Trendlines.Add
    ActiveChart.FullSeriesCollection(2).Trendlines(1).Select
    Selection.Forward = 1
    Selection.DisplayEquation = True
Antwortento top
#6
Hallo,

vielleicht solltest Du die Bitte von Günter berücksichtigen und die Datei hier hochladen.
Gruß Stefan
Win 7 / Office 2007
Antwortento top
#7

.xlsm   Für Forum.xlsm (Größe: 954,05 KB / Downloads: 6)

Vielleicht hilft es ja, auch wenn ich nicht weiß, ob er Datenwust wirklich weiterhilft. Die eingefügten Diagramme sind manuell erstellt...
Antwortento top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste