mehere Charts in einem Datenblatt ansprechen

  • Excel

    mehere Charts in einem Datenblatt ansprechen

    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