Live-Forum - Die aktuellen Beiträge
Datum
Titel
24.04.2024 19:29:30
24.04.2024 18:49:56
Anzeige
Archiv - Navigation
1640to1644
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 mit VBA Fehlermeldung

Diagramm mit VBA Fehlermeldung
20.08.2018 13:19:38
Oms
Hallo zusammen,
hier sind nochmal Fragen:
1)Aus ieinem Grund gibt es in der Zeile :
" With ActiveSheet.Shapes(Mid$(ActiveChart.Name, Len(ActiveSheet.Name) + 2))"
immer eine Fehlermeldung. Wenn ich einfach nochmal auf den ausführen button drücke, passiert genau, dass was ich will, ein Diagramm wird ausgegeben. Allerdings verstehe ich nicht warum denn dann die Fehlermeldung auftaucht. Wenn jmd helfen kann wäre das super!
2) die Ausgabegröße ist ein Array, dieser wird auf der x-Achse aufgetragen. Bei verschiedenen Simulationen möchte ich die Anzahl der Plätze im Array ändern. (z.B. Von 10 auf 50 auf 100 auf 1000).
Die Werte auf der y-Achse sind in der Funktion aufgelistet:
" ActiveChart.FullSeriesCollection(1).Values = "{0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113}" "
Das ist alles, aber nicht elegant. Kann man das noch anders lösen?
Sinn wäre das jeder Wert im Array einen Gegenwert auf der Y-Achse bekommt. diese Werte sollen immer den Abstand 1 haben. Diese aber auch deutlich über 100 oder eben auch darunter liegen darf.
Ich hoffe das war verständlich!
Der Code wird aufgerufen mit
Ausgabevariable ist ein array.
Sub xyz ()
Diagramm Ausgabevariable, positiony, positionx, "Name x-Achse", "Name y-Achse"
End Sub
Der Code:

Function Diagramm(ByRef x1, posx As Single, posy As Single, Namex As String, Namey As String)
'D erstellen
ActiveSheet.Shapes.AddChart2(240, xlXYScatterSmooth).Select
ActiveChart.SeriesCollection.NewSeries
ActiveChart.ChartTitle.text = Namey & ", " & Namex
ActiveChart.FullSeriesCollection(1).Name = Namey & ", " & Namex
ActiveChart.FullSeriesCollection(1).XValues = x1
'   ActiveChart.FullSeriesCollection(1).Values = m
ActiveChart.FullSeriesCollection(1).Values = "{0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,  _
_
15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46, _
47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113}"
ActiveChart.Axes(xlValue).MajorGridlines.Select
ActiveChart.SetElement (msoElementLegendRight)
' Diagramm auf Bildschirm positionieren:
With ActiveSheet.Shapes(Mid$(ActiveChart.Name, Len(ActiveSheet.Name) + 2))         '   _
_
Hier bleibt der Debugger stehen
.Top = ActiveSheet.Cells(posx, posy).Top
.Left = ActiveSheet.Cells(posx, posy).Left
End With
' achsenändern Makro
With ActiveChart
.HasTitle = True
.ChartTitle.Characters.text = "Diagramm " & Namey & ", " & Namex
.Axes(xlCategory, xlPrimary).HasTitle = True
.Axes(xlCategory, xlPrimary).AxisTitle.Characters.text = Namey
.Axes(xlValue, xlPrimary).HasTitle = True
.Axes(xlValue, xlPrimary).AxisTitle.Characters.text = Namex
End With
ActiveChart.ChartArea.Select
End Function
Viele Liebe Grüße!

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Diagramm mit VBA Fehlermeldung
20.08.2018 13:36:06
Oms
Vergessen: Die Fehlermeldung lautet:
Laufzeitfehler '-2147024809 (80070057'):
Das Element mit dem angegebenen Namen wurde nicht gefunden.
In ActiveChart.Name steht: Tabellenblattname Diagramm 1
In Len(ActiveSheet.Name steht nichts, glaub ich ... Allerdings habe ich auch noch nicht ganz verstand wofür das len steht.
Ungetestet...
20.08.2018 14:57:50
Beverly
Hi,
...da mir deine mappe nicht vorliegt: versuche es mal so
Function Diagramm(ByRef x1, posx As Single, posy As Single, Namex As String, Namey As String)
Dim chrDia As Chart
With ActiveSheet.Shapes.AddChart2(240, xlXYScatterSmooth).Chart
With .Parent
.Top = ActiveSheet.Cells(posx, posy).Top
.Left = ActiveSheet.Cells(posx, posy).Left
End With
.HasTitle = True
.ChartTitle.Text = "Diagramm " & Namey & ", " & Namex
.SetSourceData Source:=Range("A1")
If .SeriesCollection.Count > 0 Then .SeriesCollection(1).Delete
With .SeriesCollection.NewSeries
.Name = Namey & ", " & Namex
.XValues = x1
.Values = "{0,1,2,3,4,5,6,7,8,9,10,11,12,13,14, 15,16,17,18,19,20,21,22,23,24,25,26, _
27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46, 47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113}"
End With
.SetElement (msoElementLegendRight)
' Diagramm auf Bildschirm positionieren:
' achsenändern Makro
.Axes(xlCategory, xlPrimary).HasTitle = True
.Axes(xlCategory, xlPrimary).AxisTitle.Characters.Text = Namey
.Axes(xlValue, xlPrimary).HasTitle = True
.Axes(xlValue, xlPrimary).AxisTitle.Characters.Text = Namex
End With
End Function


Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige