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!