Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1388to1392
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

Diagramm in VBA

Diagramm in VBA
23.10.2014 10:13:03
Monika
Hallo,
ich bin gerade dabei ein Makro zu erstellen, dass auch ein Diagramm einfügt. Nun stehe ich vor dem Problem, dass ich 2 Kurven einfügen möchte. Eine bekomme ich ohne Probleme hin, aber bei der zweiten muss ich etwas falsch machen, da hagelt es Fehlermeldungen oder komische Kurven. Wie kann ich in den folgenden Code (oder in einen leicht abgewandelten) eine zweite Kurve in dasselbe Diagramm einbringen?
Über eine Antwort freue ich mich sehr.
LG
Monika
'Diagramm Kraft-Verlängerungsdiagramm erstellen
Range("P3").Select()
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("O16").Value & ":F" & Range("O17").Value)
ActiveChart.FullSeriesCollection(1).Values = _
ActiveSheet.Range("D" & Range("O16").Value & ":D" & Range("O17").Value)
With ActiveChart
.HasLegend = True 'Legende hinzufügen
.HasTitle = True 'Titel
.ChartTitle.Characters.Text = "Kraft-Verlängerungs-Diagramm"
.Axes(xlCategory, xlPrimary).HasTitle = True 'x-Achsenbeschriftung
.Axes(xlCategory, xlPrimary).AxisTitle.Characters.Text = "Längenänderung [mm]"
.Axes(xlValue, xlPrimary).HasTitle = True 'y-Achsenbeschriftung
.Axes(xlValue, xlPrimary).AxisTitle.Characters.Text = "Kraft genullt [N]"
End With

20
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Diagramm in VBA
23.10.2014 10:28:33
Beverly
Hi Monika,
ich würde es so machen:
'Diagramm Kraft-Verlängerungsdiagramm erstellen
With ActiveSheet.Shapes.AddChart2(240, xlXYScatterSmoothNoMarkers).Chart
' 1. Datenreihe
With .SeriesCollection.NewSeries
'Erstellen Kurve "Längenänderung". Auswahl der Werte Beginn bei Kraft 5 N, Ende am Ende  _
der Werte
.Name = "Längenänderung fein"
.XValues = ActiveSheet.Range("F" & Range("O16").Value & ":F" & Range("O17").Value)
.Values = ActiveSheet.Range("D" & Range("O16").Value & ":D" & Range("O17").Value)
End With
' 2. Datenreihe, Achtung, Zellbereiche anpassen!!
With .SeriesCollection.NewSeries
'Erstellen Kurve .....
.Name = "......"
.XValues = ActiveSheet.Range("F" & Range("O16").Value & ":F" & Range("O17").Value)
.Values = ActiveSheet.Range("D" & Range("O16").Value & ":D" & Range("O17").Value)
End With
.HasLegend = True 'Legende hinzufügen
.HasTitle = True 'Titel
.ChartTitle.Characters.Text = "Kraft-Verlängerungs-Diagramm"
.Axes(xlCategory, xlPrimary).HasTitle = True 'x-Achsenbeschriftung
.Axes(xlCategory, xlPrimary).AxisTitle.Characters.Text = "Längenänderung [mm]"
.Axes(xlValue, xlPrimary).HasTitle = True 'y-Achsenbeschriftung
.Axes(xlValue, xlPrimary).AxisTitle.Characters.Text = "Kraft genullt [N]"
End With

Anzeige
AW: Diagramm in VBA
23.10.2014 14:46:28
Monika
Hallo Beverly,
cool, danke. Das ist ja richtig simpel :-D Gewusst wie ;-)
Allerliebste Grüße
Monika

AW: Diagramm in VBA
23.10.2014 14:59:25
Monika
Weißt du zufällig auch wie ich jetzt eine Trendlinie einfüge? Mit meiner üblichen Schreibweise will es wohl wegen des "With" nicht mehr.
  'Trendlinie für E-Modulkurve anlegen. Fortsetzen um 1mm
ActiveChart.FullSeriesCollection(1).Trendlines.Add
ActiveChart.FullSeriesCollection(1).Trendlines(1).Select
Selection.Forward = 1
Selection.DisplayEquation = True

AW: Diagramm in VBA
23.10.2014 15:40:15
Beverly
Hi Monika,
ich habe es jetzt nicht getestet, aber versuche es mal nach diesem Prinzip:
     With .SeriesCollection.NewSeries
'Erstellen Kurve .....
.Name = "......"
.XValues = ActiveSheet.Range("F" & Range("O16").Value & ":F" & Range("O17").Value)
.Values = ActiveSheet.Range("D" & Range("O16").Value & ":D" & Range("O17").Value)
.Trendlines.Add
With .Trendlines(1)
.Forward = 1
.DisplayEquation = True
End With
End With


Anzeige
AW: Diagramm in VBA
23.10.2014 16:59:33
Monika
Wow, funktioniert einwandfrei. Genial! Danke :-)

AW: Diagramm in VBA
23.10.2014 19:12:55
Monika
Hi, ich nochmal...
Irgendwie komme ich mit dem "With" nicht so richtig klar.
Wie kann ich denn das jetzt einfügen?
      Range("O3").Formula = ActiveChart.SeriesCollection(2).Trendlines(1).DataLabel.Text

AW: Diagramm in VBA
23.10.2014 20:13:48
Beverly
Hi Monica,
innerhalb der With-Anweisung schreibst du nur das, was hinter dem With steht - in deinem Fall müsstst du deshalb den fett markierte Teil weglassen:
ActiveChart.SeriesCollection(2).Trendlines(1).DataLabel.Text
Dein Code müsste dann also so aussehen:
        With .Trendlines(1)
.Forward = 1
.DisplayEquation = True
Range("O3").Formula = .DataLabel.Text
End With


Anzeige
AW: Diagramm in VBA
27.10.2014 11:24:46
Monika
Jetzt wird es komisch. Wenn ich deine Variante mit F8 ausprobiere, funktioniert sie einwandfrei. Wenn ich F5 verwende, wird die Formel nicht ausgelesen. Woran kann das liegen?

AW: Diagramm in VBA
27.10.2014 11:51:00
Beverly
Hi Monika,
wird sie tatsächlich nicht in die Zelle geschrieben oder steht sie in O3 und ist nur am Bildschirm nicht sichtbar? Letzteres Phänomen habe ich auch immer mal - dann hilft bei mir, die Mappe schließen (speichern) und wieder öffnen.


AW: Diagramm in VBA
28.10.2014 15:11:03
Monika
Nein, in O3 steht leider wirklich nichts. Weder mit Schließen udn Öffnen und auch ein Befehl, der mir den Inhalt ausgeben soll, zeigt nichts.
Hier vielleicht nochmal der Code. Mit F8 funktioniert es weiterhin, mit F5 nicht :-(
Range("AB20").Select
'Diagramm Kraft-Verlängerungsdiagramm erstellen
With ActiveSheet.Shapes.AddChart2(240, xlXYScatterSmoothNoMarkers).Chart
' 1. Datenreihe
With .SeriesCollection.NewSeries
'Erstellen Kurve "Längenänderung". Auswahl der Werte Beginn bei Kraft 5 N, Ende am Ende  _
_
der Werte
.Name = "Längenänderung"
.XValues = ActiveSheet.Range("F" & Range("O16").Value & ":F" & Range("O17").Value)
.Values = ActiveSheet.Range("D" & Range("O16").Value & ":D" & Range("O17").Value)
End With
' 2. Datenreihe, Achtung, Zellbereiche anpassen!!
With .SeriesCollection.NewSeries
'Erstellen Kurve .....
.Name = "EModul"
.XValues = ActiveSheet.Range("F" & Range("O16").Value & ":F" & Range("O19").Value)
.Values = ActiveSheet.Range("D" & Range("O16").Value & ":D" & Range("O19").Value)
'Trendlinie für E-Modulkurve anlegen. Fortsetzen um 1mm
.Trendlines.Add
With .Trendlines(1)
.Forward = 1
.DisplayEquation = True
Range("O3").Formula = .DataLabel.Text
End With
End With
.HasLegend = True 'Legende hinzufügen
With .Legend
.Height = 10
.Top = 200
.Left = 0
.Width = 350
End With
With .PlotArea
.Width = 300
.Height = 160
.Top = 20
End With
With .ChartArea
.Top = Range("N21").Top
.Left = Range("N21").Left
.Width = 244
.Height = 196
End With
.HasTitle = True 'Titel
.ChartTitle.Characters.Text = "Kraft-Verlängerungs-Diagramm"
.Axes(xlCategory, xlPrimary).HasTitle = True 'x-Achsenbeschriftung
.Axes(xlCategory, xlPrimary).AxisTitle.Characters.Text = "Längenänderung [mm]"
.Axes(xlValue, xlPrimary).HasTitle = True 'y-Achsenbeschriftung
.Axes(xlValue, xlPrimary).AxisTitle.Characters.Text = "Kraft genullt [N]"
End With

Anzeige
AW: Diagramm in VBA
28.10.2014 15:18:29
Beverly
Dann lade doch mal deine Mappe hoch.


AW: Diagramm in VBA
29.10.2014 08:40:37
Monika
Hi,
hier ist die Version, in der ich F5 gedrückt habe:
In Makro2 gibt es ein Sub entscheidenerTeil. Dort wird nur das Diagramm eingefügt und die Trendlinie ausgelesen.
Das komplette Makro ist dadrunter.
Hoffentlich steigst du durch...
LG
Moni

AW: Diagramm in VBA
29.10.2014 09:06:53
Beverly
Hi Moni,
hängt wohl damit zusammen, das der Code schneller durchläuft als Excel reagieren kann, da es im Einzelschrittmodus ja funktioniert. Die einzige Lösung, die ich im Augenblick sehe ist, dass man die Zelle vorher selektiert und damit den Code "verlangsamt"
                    Range("O3").Select
Range("O3").Formula = .DataLabel.Text


Anzeige
AW: Diagramm in VBA
29.10.2014 12:55:26
Monika
Mmh, reicht leider immer noch nicht. Habe jetzt 3 verschiedene Range.Select Funktionen davor gesetzt und es klappt dennoch nicht. Gibt es einen Befehl, der den Code verlangsamt? Hört sich irgendwie blöd an^^ Aber ich finde im Internet nichts dazu.
Oder siehst du eine andere Stelle, an der die Trendlinie besser ausgelesen werden könnte? In dem "With"-Bereich ist es vermutlich überall zu schnell, aber ich wüsste nicht wie ich das Diagramm aktivieren kann ohne den direkten Namen zu nennen. Kann man das zuletzt erstellte Diagramm aktivieren oder so? Ich habe leider noch andere Diagramme mit drin...

Anzeige
AW: Diagramm in VBA
29.10.2014 13:02:08
Beverly
Hmm, bei mir hat es funktioniert. Andere Variante - lösche die beiden Zeilen und schreibe stattdessen vor End Sub diese Zeile:
    Range("O3").Formula = ActiveSheet.ChartObjects(1).Chart.SeriesCollection("EModul"). _
Trendlines(1).DataLabel.Text


AW: Diagramm in VBA
29.10.2014 13:17:31
Monika
Hat das bei dir funktionert? Bei mir sagt er "ungültiger Parameter"
Grmpf. Du gibst so tolle Tipps und dennoch will ich meinen PC nur noch aus dem Fenster werfen. Furchtbar^^

AW: Diagramm in VBA
29.10.2014 13:26:25
Beverly
Selbstverständlich hat es bei mir funktioniert. Heißt bei dir die Datenreihe mit der Trendlinie vielleicht anders als "EModul"?


Anzeige
AW: Diagramm in VBA
29.10.2014 17:37:01
Monika
Tausend Dank für deine Geduld. Mein ChartObjekt im anderen Datenblatt war nicht die 1, sondern die 4.
Vielleicht noch eine Frage zum krönenden Abschluss, kann ich das Diagramm auch über den Namen ansprechen, den ich ihm gegeben habe, also "Kraft-Verlängerungs-Diagramm"?

AW: Diagramm in VBA
29.10.2014 18:49:05
Beverly
Selbstverständlich - anstelle ChartObjects(1) eben dieses: ChartObjects("Kraft-Verlängerungs-Diagramm")


Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige