ich habe in einem datenblatt 3 charts, wenn ich nummer 1 anklicke gilt diese codezeile: ActiveSheet.ChartObjects(1).Chart.SeriesCollection(1).Points.Count
nr2. : ActiveSheet.ChartObjects(2).Chart.SeriesCollection(1).Points.Count
jedoch funktioniert diese zeile ja immer nur wenns "active" also angeklickt ist, wie mache ich denn das, dass ich keinen chart anklicken muss um ihn anzusprechen?? bzw. der sinn meiner codezeile trotz veränderung gleich bleibt?
nur zur info, es sind 3 unterschiedliche charts, balken, punkt, säule.
möchte nämlich bedingungen setzten, sprich: balkenanzahl<=30 dann balkendiagramm ansonsten punkt und säulendiagramm.
also zum schluss nochmals genauer, wenn mehr als 30 werte in der tabelle vorhanden sind, soll er eben alle(zB 100 werte) werte in form von dem punkt-diagramm ausgeben, wenns <=30 werte in der tabelle sind dann balkendiagramm und punktediagramm.
nur nun eben auch noch die frage wie ich auf meine diagramme zugreife, ohne sie anzuklicken u diese codezeilen zu verwenden:
ActiveSheet.ChartObjects(1).Chart.SeriesCollection(1).Points.Count
ActiveSheet.ChartObjects(2).Chart.SeriesCollection(1).Points.Count
'*********************** Balken-Diagramm ********************************************
'Variable = 6
zahl = ActiveSheet.ChartObjects(1).Chart.SeriesCollection(1).Points.Count
Variable = zahl / 5
'MsgBox "balken: " & Variable
'If zahl <= 30 Then
ReDim Farbe(Int((zahl - 1) / Variable))
Farbe(0) = 10
Farbe(1) = 43
Farbe(2) = 6
Farbe(3) = 45
Farbe(4) = 3
For J = 1 To zahl Step Variable
For k = 0 To Variable - 1
If J + k > zahl Then Exit For
ActiveChart.SeriesCollection(1).Points(J + k).Select
Selection.Fill.OneColorGradient Style:=msoGradientHorizontal, Variant:=2, _
Degree:=0.231372549019608
With Selection
.Shadow = False
.Fill.Visible = True
.Fill.ForeColor.SchemeColor = Farbe(Int((J - 1) / Variable))
'.Fill.ForeColor.SchemeColor = Int((J - 1) / Variable) + 3
End With
Next k
Next J
'*********************** Punkt-Diagramm ********************************************
zahl2 = ActiveSheet.ChartObjects(2).Chart.SeriesCollection(1).Points.Count
Variable2 = zahl2 / 5
MsgBox "punkt: " & Variable2
'If zahl <= 30 Then
ReDim Farbe(Int((zahl2 - 1) / Variable2))
Farbe(0) = 10
Farbe(1) = 43
Farbe(2) = 6
Farbe(3) = 45
Farbe(4) = 3
For m = 1 To zahl2 Step Variable2
For L = 0 To Variable2 - 1
If m + k > zahl2 Then Exit For
ActiveChart.SeriesCollection(1).Points(m + L).Select
Selection.Fill.OneColorGradient Style:=msoGradientHorizontal, Variant:=2, _
Degree:=0.231372549019608
With Selection
.Shadow = False
.Fill.Visible = True
.MarkerBackgroundColorIndex = Farbe(Int((m - 1) / Variable2))
End With
Next L
Next m
lG VNose
nr2. : ActiveSheet.ChartObjects(2).Chart.SeriesCollection(1).Points.Count
jedoch funktioniert diese zeile ja immer nur wenns "active" also angeklickt ist, wie mache ich denn das, dass ich keinen chart anklicken muss um ihn anzusprechen?? bzw. der sinn meiner codezeile trotz veränderung gleich bleibt?
nur zur info, es sind 3 unterschiedliche charts, balken, punkt, säule.
möchte nämlich bedingungen setzten, sprich: balkenanzahl<=30 dann balkendiagramm ansonsten punkt und säulendiagramm.
also zum schluss nochmals genauer, wenn mehr als 30 werte in der tabelle vorhanden sind, soll er eben alle(zB 100 werte) werte in form von dem punkt-diagramm ausgeben, wenns <=30 werte in der tabelle sind dann balkendiagramm und punktediagramm.
nur nun eben auch noch die frage wie ich auf meine diagramme zugreife, ohne sie anzuklicken u diese codezeilen zu verwenden:
ActiveSheet.ChartObjects(1).Chart.SeriesCollection(1).Points.Count
ActiveSheet.ChartObjects(2).Chart.SeriesCollection(1).Points.Count
'*********************** Balken-Diagramm ********************************************
'Variable = 6
zahl = ActiveSheet.ChartObjects(1).Chart.SeriesCollection(1).Points.Count
Variable = zahl / 5
'MsgBox "balken: " & Variable
'If zahl <= 30 Then
ReDim Farbe(Int((zahl - 1) / Variable))
Farbe(0) = 10
Farbe(1) = 43
Farbe(2) = 6
Farbe(3) = 45
Farbe(4) = 3
For J = 1 To zahl Step Variable
For k = 0 To Variable - 1
If J + k > zahl Then Exit For
ActiveChart.SeriesCollection(1).Points(J + k).Select
Selection.Fill.OneColorGradient Style:=msoGradientHorizontal, Variant:=2, _
Degree:=0.231372549019608
With Selection
.Shadow = False
.Fill.Visible = True
.Fill.ForeColor.SchemeColor = Farbe(Int((J - 1) / Variable))
'.Fill.ForeColor.SchemeColor = Int((J - 1) / Variable) + 3
End With
Next k
Next J
'*********************** Punkt-Diagramm ********************************************
zahl2 = ActiveSheet.ChartObjects(2).Chart.SeriesCollection(1).Points.Count
Variable2 = zahl2 / 5
MsgBox "punkt: " & Variable2
'If zahl <= 30 Then
ReDim Farbe(Int((zahl2 - 1) / Variable2))
Farbe(0) = 10
Farbe(1) = 43
Farbe(2) = 6
Farbe(3) = 45
Farbe(4) = 3
For m = 1 To zahl2 Step Variable2
For L = 0 To Variable2 - 1
If m + k > zahl2 Then Exit For
ActiveChart.SeriesCollection(1).Points(m + L).Select
Selection.Fill.OneColorGradient Style:=msoGradientHorizontal, Variant:=2, _
Degree:=0.231372549019608
With Selection
.Shadow = False
.Fill.Visible = True
.MarkerBackgroundColorIndex = Farbe(Int((m - 1) / Variable2))
End With
Next L
Next m
lG VNose