Excel VBA Bereiche für Diagramm variabel definieren

Allan Sche Sar

Lt. Commander
Registriert
Jan. 2004
Beiträge
1.891
Hallo Leute,

ich komm nicht mehr weiter. Für die Automatisierung von Diagrammen muss ich die Bereiche definieren. Die Diagrammbereiche werden durch die verbundenen Zellen in Zeile 2 definiert.
Meine Idee war, dass ich mit einer variablen Variable die einzelnen Bereichsbuchstaben zuweise, da sich diese nicht ändern und dann in einer For-Schleife jeweils darauf zugreife.

Code:
Sub Dia_erzeugen()

Dim i_(1 To 40) As Integer
Dim Index As Integer


    'Definition der Bereichsgrenzen für das Diagramm'
    i_1 = "C"
    i_2 = "F"
    i_3 = "G"
    i_4 = "J"
    i_5 = "K"
    i_6 = "N"
    i_7 = "O"
    i_8 = "R"
    i_9 = "S"
    i_10 = "W"
    i_11 = "X"
    i_12 = "AB"
    i_13 = "AC"
    i_14 = "AF"
    i_15 = "AG"
    i_16 = "AJ"
    i_17 = "AK"
    i_18 = "AN"
    i_19 = "AO"
    i_20 = "AR"
    i_21 = "AS"
    i_22 = "AV"
    i_23 = "AW"
    i_24 = "AZ"
    i_25 = "BA"
    i_26 = "BE"
    i_27 = "BF"
    i_28 = "BJ"
    i_29 = "BK"
    i_30 = "BN"
    i_31 = "BO"
    i_32 = "BR"
    i_33 = "BS"
    i_34 = "BV"
    i_35 = "BW"
    i_36 = "BZ"
    i_37 = "CA"
    i_38 = "CD"
    i_39 = "CE"
    i_40 = "CH"

    For Index = 1 To 40
        MsgBox Index
        MsgBox i_Index
        ActiveChart.SeriesCollection(1).Name = "='" & PAX & "'!$" & i_Index & "$1:$" & i_Index +1 & "$1" 
    Next Index

Mein Problem ist aber, dass i_Index schon nicht die oben definierten Buchstaben zeigt.
Wie gehe ich nun vor, damit ich das hinzufügen von Diagrammenpunkten nicht komplett fest definieren muss?

P.S.: Wenn ich die i_(1 to 40) innerhalb der For-Schleife definiere, würde es funktionieren, doch dann durchläuft das Programm jedes mal die 40 Zeilen für nichts.
 

Anhänge

  • Auswertung.zip
    40,5 KB · Aufrufe: 141
  • Dia KOpf.PNG
    Dia KOpf.PNG
    9 KB · Aufrufe: 136
Irgendwie hast Du noch nicht oft mit VBA gearbeitet oder? Da ist ja einiges falsch in Deiner angehängten Datei.

Bei Values und XValues würde ichs mit
ActiveChart.SeriesCollection(1).Values = ActiveSheet.Range("$C$3:$F$3")
probieren, da Du in Deinem Code nur eine Zeichenkette übergibst,
.Name darf nicht mit = anfangen und braucht auch keine Quotierung mit '

Dann sind lauter undefinierte Variablen im Code (ich rate dazu Option Explicit fest als Voreinstellung zu nehmen).
Die Array-Schreibweise hab ich auch noch nie gesehen,
i_1 = "C", das müsste eher i_(1) = "C" lauten
 
alxtraxxx schrieb:
Bei Values und XValues würde ichs mit
ActiveChart.SeriesCollection(1).Values = ActiveSheet.Range("$C$3:$F$3")
Mein dargestellt Code stammt aus der Aufzeichnung von Excel selbst. Aber ich werde die Änderung einmal ausprobieren.
Aber ich werde nicht mit ActiveSheet in dem Diagramm arbeiten, da dieses nicht immer auf dem gleichen Blatt ist ;)

Ich weiß aber nun, was mein Fehler war, die variable Variable war als Integer definiert und nicht als String :facepalm: jetzt rennt der Code.
 
alxtraxxx schrieb:
ActiveChart.SeriesCollection(1).Values = ActiveSheet.Range("$C$3:$F$3")

Ich habe dein Vorschlag mal ausprobiert und er funktioniert nicht - Typen unverträglichkeit ;)



Nachtrag: ich habe noch ein kleines Problem, welches ich langfristig sauber gelöst haben möchte.
Und zwar sollen in meinen Diagrammen jeweils die zwei eingefügten Datensätze die gleiche Reihenfarbe bekommen. Nun möchte ich aber nicht für die n verschiedenen Datenreihen Farben vordefinieren.
Wie bekomme ich daher die Farbe der Datenreihe heraus, die als erstes eingefügt wird?
 
Zuletzt bearbeitet:
Komisch bei mir hats funktioniert X)
Entweder musst Du ein Template erstellen und anwenden oder liest und setzt das vermutlich über
sowas wie
ActiveChart.SeriesCollection(i).Format.Fill.BackColor.RGB
 
Ich habe es gelöst mein Problem mit der Anpassung der Farbe aller ungeraden Datenreihen an die vorherige Datenreihe:

ActiveChart.SeriesCollection(j).Border.Color = ActiveChart.SeriesCollection(j - 1).Border.Color

P.S.: Das ist nur für die Nachwelt, wenn jemand mit der Suchfunktion auf diesesn Thread stößt
 

Ähnliche Themen

Zurück
Oben