Clever-Excel-Forum

Normale Version: Diagramm mit VBA
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
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
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.
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.
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.
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
Hallo,

vielleicht solltest Du die Bitte von Günter berücksichtigen und die Datei hier hochladen.
[attachment=626]

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