Hallo Nelly,
sieh dir mal in der VBA-Hilfe die Erläuterungen zur For...Next-Anweisung und Array-Funktion an!
Du hat dein Array sortiert und als Chart dargestellt. Die Unterteilung erfolgt nicht, indem du den Inhalt der Array-Variablen verwendest, sondern den Index. Du willst doch z.B. die ersten vier Zahlen in einer Frabgruppe darstellen. Das sind die Indizes 0, 1, 2, und 3. Die Werte von Arr(0), Arr(1), Arr(2) und Arr(3) sind doch bereits die Längen deiner Balken in der Chart.
Ich habe dir noch einzelne Indizes im Makro angepasst, damit es ohne weitere Änderungen lauffähig ist.
variable = 4
zahl = 20
ReDim Farbe(Int((zahl - 1) / variable))
Farbe(0) = 3
Farbe(1) = 43
Farbe(2) = 4 'in deinen Colorindex -Wunsch ändern
Farbe(3) = 5 'in deinen Colorindex -Wunsch ändern
Farbe(4) = 6 'in deinen Colorindex -Wunsch ändern
'... ergänzen, falls Zahl größer als 20
For j = 1 To zahl Step variable
For k = 0 To 3
If j + k größer zahl Then Exit For 'durch das Größerzeichen ersetzen
ActiveChart.SeriesCollection(1).Points(j + k).Select
Selection.Fill.OneColorGradient Style:=msoGradientHorizontal, Variant:=2, _
Degree:=0.231372549019608
With Selection
.Fill.Visible = True
.Fill.ForeColor.SchemeColor = Farbe(Int((j - 1) / variable))
'oder einfach .Fill.ForeColor.SchemeColor =Int((j - 1) / variable)+3
End With
Next k
Next j
Gruß
Holger
Nelly schrieb am 03.03.2009 17:57:23:
Hallo Holger!
Danke erstmal für deine Hilfe.
Hmm, ich bin draufgekommen, dass wenn ich das so mache, hat das ganze nichts mit meinem sortiertem Array zu tun. ich möchte ja das array als hilfe heranziehen. eben ein absteigend sortiertes array, und dann je nach eingabe der variable(in meinem fall =4), das array "abteilen". sprich in 4er schritten die einfärbung vornehmen.
Das heißt ich müsste auf mein array zugreifen. sprich rot wäre von arr(0) bis arr(3), orange arr(4)-(7), usw.
nur fori=arr(0) to arr(zahl) step variable
funktioniert nicht, geht gar nicht mal in die schleife rein...
weißt du vlt wie das funktionieren könnte??
lg Nelly
Holger schrieb am 03.03.2009 17:40:37:
Hallo Nelly,
wenn variable größer als 1 ist, nimmt J nie den Wert 2 an, da wegen For J = 1 To zahl Step variable die Zahlen 1, 1+variable, 1+variable+variable usw. durchlaufen werden. Also wird der Case 2 nicht angesprungen.
Versuche mal folgenden Ansatz:
redim Farbe(4)
Farbe(0)=3
Farbe(1)=43
...
For J = 1 To zahl Step variable
For k = 1 To 4
ActiveChart.SeriesCollection(1).Points(k).Select
Selection.Fill.OneColorGradient Style:=msoGradientHorizontal, Variant:=2, _
Degree:=0.231372549019608
With Selection
.Fill.Visible = True
.Fill.ForeColor.SchemeColor = farbe(j)
End With
Next k
next j
Ob dein Code zur Einfärbung funktioniert, habe ich nicht weiter geprüft.
Gruß
Holger
Nelly schrieb am 03.03.2009 15:20:49:
Halli Hallo, ich wäre auf eure Hilfe angewiesen und zwar:
hab die Daten aus meiner Tabelle in ein Array gespeichert, dieses dann soriert, und auch die Länge ausgegeben. Nun habe ich ein absteigend sortiertes Array, diese Werte befinden sich allerdings in einem Chart. Ich möchte nun mein Chart mit 5 Fraben einfärben, Grün(0-20%), hellgrün(20-40%), gelb(40-60%), orange(60-80%), rot(80-100%).
habe mir das so vorgestellt, dass man mit einer Variablen sagt, wann die nächste Farbe dran ist. zB. 20 Balken, variable=4 --> die ersten 4 sind grün, nächsten 4 hellgrün usw.
variable = 4
For J = 1 To zahl Step variable
Select Case (J)
Case 1
For k = 1 To 4
ActiveChart.SeriesCollection(1).Points(k).Select
Selection.Fill.OneColorGradient Style:=msoGradientHorizontal, Variant:=2, _
Degree:=0.231372549019608
With Selection
.Fill.Visible = True
.Fill.ForeColor.SchemeColor = 3
End With
Next k
Case 2
For u = 4 To 8
ActiveChart.SeriesCollection(1).Points(u).Select
Selection.Fill.OneColorGradient Style:=msoGradientHorizontal, Variant:=2, _
Degree:=0.231372549019608
With Selection
.Fill.Visible = True
.Fill.ForeColor.SchemeColor = 43
End With
Next u
End Select
Next
nur leider springt dieser nicht in die nächsten case, case 2, case 3, ... bzw. glaub ich auch dass dies nicht der richtige Ansatz ist, wäre echt dankbar, wenn mir jemand helfen könnte!!!!
Vielen Dank, lG Nelly |