Diagramm mit Makro erzeugen

Informationen und Beispiele zu den hier genannten Dialog-Elementen:
Label
Bild

Betrifft: Diagramm mit Makro erzeugen
von: axelg
Geschrieben am: 24.04.2005 15:27:45
Hallo Leute,
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.
Bild

Betrifft: AW: Diagramm mit Makro erzeugen
von: Cardexperte
Geschrieben am: 24.04.2005 16:57:12
Hello axelg,
warum wird das Diagramm immer wieder auf Neue erzeugen??????? Mach das Diagramm doch nur einmal!!!! fertig, z.B. als extra Blatt und steuere die Anzeige indem du Zeilen bzw. Spalten ausblendest! Geht doch 100 mal einfacher, hast du nicht ein dummyfile, das Makro sagt mir gar nicht was du willst, denn es wiederspiegelt doch nur die Diagrammerstellung!
Gruss WS
Bild

Betrifft: AW: Diagramm mit Makro erzeugen
von: axelg
Geschrieben am: 24.04.2005 19:50:16
Hallo Cardexperte,
vielen Dank für Deinen Lösungsvorschlag, ich kann mir darunter leider nicht so richtig was vorstellen. Ich hab mal ein Dummyfile, welches auch mein bisheriges makro enthält, reingestellt.
Im Prinzip gehts darum, die Werte der ersten und zweiten Datenreihe spaltenweise im Diagramm darzustellen. Die 3. Datenreihe ist der prozentuale Vergleich der ersten beiden Datenreihen und soll im Diagramm ebenfalls aber auf einer Sekundärachse angezeigt werden.
Alle Werte sollen über einer Abszisse, welche aus der 1. Spalte der oberen Datenreihe gebildet wird, dargestellt werden.
Naja und damit sich derAufwand in Grenzen hält (denn das ganze muss ich bestimmt noch mehr als 100mal machen...), wollte ich halt ein Makro schreiben, welches mir diese Arbeit abnimmt.
Hier der Link zum File:
https://www.herber.de/bbs/user/21632.xls
Vielen Dank für Deine Mühe.
Axel
Bild

Betrifft: AW: Diagramm mit Makro erzeugen
von: Cardexperte
Geschrieben am: 25.04.2005 09:35:20
Hello Axel,
habe dazu noch einige Frage:
1. Frage was meinst du mit "denn das ganze muss ich bestimmt noch mehr als 100mal machen", heisst das du hast ca. 100 Excelfiles oder Mappen, wo noch keine Diagramme drin sind? Wenn ja dann muss es doch über chartadd gehen
2. so viel wie ich sehe ist die erste Spalte immer die x-Achse, oder?
was meinst du mit spaltenweise darstellen, es wird doch spaltenweise dargestellt, oder willst du wahlweise z.B. Spalte B und beim nächsten mal Spalte C darstellen?
3. wozu ist die Datenreihe 1 da, oder anders ausgedrückt, wozu sind die grün unterlegten und blau unterlegten Zellen gut (sind doppelt), oder unterscheiden sie sich im Original
Gruss WS
Bild

Betrifft: AW: Diagramm mit Makro erzeugen
von: axelg
Geschrieben am: 25.04.2005 10:18:29
Hallo Cardexperte,
zu Deinen Fragen:
1. Ja, es wird noch viele Mappen und Files mehr geben, die dieselbe Struktur aufweisen.
3. Datenreihe 1 und 2 wurden jeweils von verschiedenen Programmen erzeugt. Die Spalten dieser Datenreihen möchte ich miteinander vergleichen, sie unterscheiden sich oft erst in der x-ten Stelle nach dem Komma.
Es existiert also ein minimaler Unterschied zwischen Datenreihe 1 (grün) und Datenreihe 2 (blau).
2. Ja, die erste Spalte ist immer die x-Achse.
Die Daten sollen spaltenweise verglichen werden, d.h. z.B. die Daten aus Spalte B in Datenreihe 1 und 2 sind fast gleich. Spalte B in der Datenreihe 3 ist die prozentuale Abweichung der Spalte B, Datenreihe 2 von Spalte B, Datenreihe 1.
Und zur Verdeutlichung dieses Vergleichs möchte ich Diagramme erzeugen, welche auf der Primärachse die Spalten aus Datenreihe 1 und 2 enthalten und auf der Sekundaärachse die Daten aus den Spalten der Datenreihe 3(und über Spalte A, 1. Datenreihe aufgetragen werden).
Hm, ich häng mal ein File mit mehr manuell erstellten Diagrammen ran, vielleicht wirds dann deutlicher. (hab die jetzt mit Strg+Mausklick geklont und bearbeitet, aber so richtig "bequem" ist das auch nicht).
https://www.herber.de/bbs/user/21661.xls
Auf jeden Fall vielen Dank, dass Du mir hier versuchst "ehrenamtlich" zu helfen.
Bild

Betrifft: AW: Diagramm mit Makro erzeugen
von: axelg
Geschrieben am: 25.04.2005 16:29:33
Achso, was ist eigentlich "chartadd"? Habe dazu nichts gefunden.
Oder ist damit nur Strg+Mausklick gemeint?
Bild

Betrifft: AW: Diagramm mit Makro erzeugen
von: Cardexperte
Geschrieben am: 25.04.2005 17:49:42
Helle axelg,
meinte nur charts.add, also ein neues Diagramm hinzufügen, hast du doch auch in deinem Makro drinstehen! Ich schicke dir mal deine Datei mit ein paar Abänderungen zu. Schau es dir an, dein Makro (Diagramm erstellen) habe ich übernommen und es wird nur aufgerufen durch das Makro vieldiagramm, wo mit einer Zählvariablen die einzelnen Spalten angewählt werden und dann die Diagramme erstellt werden. Muss natürlich noch weiter ausgebaut werden, insbesondere, dass sie nicht alle übereinanderliegen, lässt sich aber alles machen, Bemerkungen habe ich in die Makros reingeschrieben, auch die Steuerung der Überschriften, der Beschriftung der y-Achse lassen sich so einfach bewerkstelligen!
Am besten, wenn du noch Fragen oder Wünsche hast kontaktiere mich unter Seidel-Welka@t-online.de
Gruss WS
ach so hier noch deine Datei zurück:
https://www.herber.de/bbs/user/21688.xls
Bild

Betrifft: AW: Diagramm mit Makro erzeugen
von: AxelG
Geschrieben am: 25.04.2005 23:56:37
Vielen, vielen Dank, Cardexperte!
Das Makro ist fast perekt. Ich wäre nie darauf gekommen (oder hätte mich noch wochenlang in VBA einarbeiten müssen).
Ich probiere schon die ganze Zeit, das makro noch ein bissel mehr meinen Wünschen anzupassen. Wenn ich nicht mehr weiterkomme, werde ich Dein Angebot nochmal wahrnehmen müssen. Aber auf jeden Fall warst Du ne grosse Hilfe.
cu, Axel
 Bild

Beiträge aus den Excel-Beispielen zum Thema "Diagramm mit Makro erzeugen"