05.10.2014, 18:31
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
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