hoffentlich kann mir hier jemand weiterhelfen, probiere schon stundenlang, habe Bücher gewälzt und Foren durchstöbert, ohne erkennbaren Erfolg.
Ich möchte ein Diagramm mit 3 Graphen erzeugen, die aus jeweils 3 Spalten erzeugt werden. D.h. die x-Achse ist konstant, es gibt dazu aber 3 Wertebereiche. Ich habe bereits ein funktionierendes Makro erzeugt, in dem für das Diagramm bereits feste Spalten vorgegeben sind. Allerdings ist es mir noch nicht gelungen, das Makro so abzuändern, bzw zu "dynamisieren", dass ich mir die 3Spalten auswählen kann, mit denen ich das Diagramm erzeugen will. "Selection" und sowas bringt bei mir nur Laufzeitfehler.
Bei einfachen Diagrammen mit nur einem Wertebereich ist mir die Erzeugung so eines "dynamischen" Makros gelungen, indem ich einfach die Zeile im VBA-Editor gelöscht habe, in der die Spalte aus dem Excelarbeitsblatt ausgewählt wurde. "Selction" hat mich hier auch nicht weitergebracht.
Bitte nicht auslachen, bin blutiger Makro-Anfänger.
Hier der Quellcode, vielleicht hilft er ja ein bissel bei einer Antwort:
Sub Diagrammerstellung()
' Diagrammerstellung Makro
' Makro am 24.04.2005 von aufgezeichnet
' Tastenkombination: Strg+a
Charts.Add
ActiveChart.ChartType = xlXYScatterLines
ActiveChart.SetSourceData Source:=Sheets("Zug").Range("C2:C14"), PlotBy:= _
xlColumns
ActiveChart.SeriesCollection.NewSeries
ActiveChart.SeriesCollection.NewSeries
ActiveChart.SeriesCollection(1).XValues = "=Zug!R2C1:R14C1"
ActiveChart.SeriesCollection(2).XValues = "=Zug!R18C1:R30C1"
ActiveChart.SeriesCollection(2).Values = "=Zug!R18C3:R30C3"
ActiveChart.SeriesCollection(3).XValues = "=Zug!R18C1:R30C1"
ActiveChart.SeriesCollection(3).Values = "=Zug!R34C3:R46C3"
ActiveChart.Location Where:=xlLocationAsObject, Name:="Zug"
With ActiveChart
.HasTitle = False
.Axes(xlCategory, xlPrimary).HasTitle = True
.Axes(xlCategory, xlPrimary).AxisTitle.Characters.Text = _
"Geschwindigkeit [km/h]"
.Axes(xlValue, xlPrimary).HasTitle = False
End With
With ActiveChart
.HasAxis(xlCategory, xlPrimary) = True
.HasAxis(xlValue, xlPrimary) = True
End With
ActiveChart.Axes(xlCategory, xlPrimary).CategoryType = xlAutomatic
ActiveChart.SeriesCollection(3).Select
ActiveChart.SeriesCollection(3).AxisGroup = 2
ActiveChart.Legend.Select
ActiveChart.Axes(xlValue, xlSecondary).Select
Selection.TickLabels.NumberFormat = "0.000E+00"
With ActiveChart.Axes(xlValue, xlSecondary)
.MinimumScaleIsAuto = True
.MaximumScaleIsAuto = True
.MinorUnitIsAuto = True
.MajorUnit = 0.000001
.Crosses = xlAutomatic
.ReversePlotOrder = False
.ScaleType = xlLinear
.DisplayUnit = xlNone
End With
ActiveChart.Axes(xlValue).MajorGridlines.Select
ActiveChart.Axes(xlValue).MajorGridlines.Select
ActiveChart.Axes(xlValue).Select
ActiveChart.PlotArea.Select
ActiveChart.Axes(xlValue).MajorGridlines.Select
Selection.Delete
ActiveChart.Legend.Select
ActiveChart.Legend.LegendEntries(1).LegendKey.Select
With Selection.Border
.Weight = xlThin
.LineStyle = xlNone
End With
With Selection
.MarkerBackgroundColorIndex = xlAutomatic
.MarkerForegroundColorIndex = xlAutomatic
.MarkerStyle = xlAutomatic
.Smooth = False
.MarkerSize = 5
.Shadow = False
End With
ActiveChart.Legend.LegendEntries(2).LegendKey.Select
With Selection.Border
.Weight = xlThin
.LineStyle = xlAutomatic
End With
With Selection
.MarkerBackgroundColorIndex = xlAutomatic
.MarkerForegroundColorIndex = xlAutomatic
.MarkerStyle = xlNone
.Smooth = False
.MarkerSize = 5
.Shadow = False
End With
End Sub
Vielen Dank schonmal im voraus für die Hilfe.