Probleme bei Loop-Erstellung (Code funktioniert)

Bild

Betrifft: Probleme bei Loop-Erstellung (Code funktioniert)
von: Tanja
Geschrieben am: 26.11.2015 06:09:12

Hallo an alle,
ich bin noch neu bei VBA und möchte gerne einen Chart dynamisch anpassen.
Dazu habe ich folgenden Code erstellt (s. Beispieldatei), der soweit auch funktioniert.
Kann mir jemand sagen, wie ich diesen Code besser, d.h. kürzer schreiben kann (z.B. als Loop), damit ich hier nicht jede Zeile einzeln erfassen muss - sowohl für die X-Achse (Series, als) auch für die Y-Achse (Category) ?
Vielen Dank im Voraus für Eure Hilfe.
Beispiel-Datei:
https://www.herber.de/bbs/user/101811.xlsm
Mein Code:

Option Explicit
Sub UpdateChart()
' Keyboard Shortcut: Ctrl+u
    Dim varSeries1 As String
    Dim varSeries2 As String
    Dim varSeries3 As String
    Dim varSeries4 As String
    Dim varSeries5 As String
    Dim varCategory1 As String
    Dim varCategory2 As String
    Dim varCategory3 As String
    Dim varCategory4 As String
    Dim varCategory5 As String
    Dim varCategory6 As String
    Dim varCategory7 As String
    
    varSeries1 = Worksheets(1).Range("A3").Value
    varSeries2 = Worksheets(1).Range("A4").Value
    varSeries3 = Worksheets(1).Range("A5").Value
    varSeries4 = Worksheets(1).Range("A6").Value
    varSeries5 = Worksheets(1).Range("A7").Value
    varCategory1 = Worksheets(1).Range("C1").Value
    varCategory2 = Worksheets(1).Range("D1").Value
    varCategory3 = Worksheets(1).Range("E1").Value
    varCategory4 = Worksheets(1).Range("F1").Value
    varCategory5 = Worksheets(1).Range("G1").Value
    varCategory6 = Worksheets(1).Range("H1").Value
    varCategory7 = Worksheets(1).Range("I1").Value
    
    ActiveSheet.ChartObjects("Chart 1").Activate
    ActiveChart.FullSeriesCollection(1).IsFiltered = varSeries1
    ActiveChart.FullSeriesCollection(2).IsFiltered = varSeries2
    ActiveChart.FullSeriesCollection(3).IsFiltered = varSeries3
    ActiveChart.FullSeriesCollection(4).IsFiltered = varSeries4
    ActiveChart.FullSeriesCollection(5).IsFiltered = varSeries5
    ActiveChart.ChartGroups(1).FullCategoryCollection(1).IsFiltered = varCategory1
    ActiveChart.ChartGroups(1).FullCategoryCollection(2).IsFiltered = varCategory2
    ActiveChart.ChartGroups(1).FullCategoryCollection(3).IsFiltered = varCategory3
    ActiveChart.ChartGroups(1).FullCategoryCollection(4).IsFiltered = varCategory4
    ActiveChart.ChartGroups(1).FullCategoryCollection(5).IsFiltered = varCategory5
    ActiveChart.ChartGroups(1).FullCategoryCollection(6).IsFiltered = varCategory6
    ActiveChart.ChartGroups(1).FullCategoryCollection(7).IsFiltered = varCategory7
End Sub

LG,
Tanja

Bild

Betrifft: AW: Probleme bei Loop-Erstellung (Code funktioniert)
von: Rudi Maintaire
Geschrieben am: 26.11.2015 09:30:54
Hallo,
ungetestet:

Sub UpdateChart()
' Keyboard Shortcut: Ctrl+u
    Dim varSeries(1 To 5) As String
    Dim varCategory(1 To 7) As String
    Dim i As Integer
    For i = 1 To 5
      varSeries(i) = Worksheets(1).Cells(i + 2, 1).Value
    Next i
    For i = 1 To 7
      varCategory(i) = Worksheets(1).Cells(1, i + 2).Value
    Next i
    
    With ActiveSheet.ChartObjects("Chart 1").Chart
      For i = 1 To 5
        .FullSeriesCollection(1).IsFiltered = varSeries(i)
      Next i
      For i = 1 To 7
        .ChartGroups(1).FullCategoryCollection(i).IsFiltered = varCategory(i)
      Next i
    End With
End Sub


Bild

Betrifft: AW: Probleme bei Loop-Erstellung (Code funktioniert)
von: Tanja
Geschrieben am: 26.11.2015 21:50:51
Hallo Rudi,
ich war leider zu schnell mit meiner Antwort - es funktioniert nicht und ich erhalte die Fehlermeldung Run-time error, Method IsFiltered of Object Series failed (für die Zeile .FullSeriesCollection...).
Noch eine Idee ?
LG,
Tanja

Bild

Betrifft: i statt 1 in der Klammer? owT
von: Michael
Geschrieben am: 27.11.2015 16:43:13


Bild

Betrifft: AW: Probleme bei Loop-Erstellung (Code funktioniert)
von: Tanja
Geschrieben am: 26.11.2015 13:42:50
Hallo Rudi,
vielen Dank !
Das bekomme ich leider nicht zum Laufen. Wird hier tatsächlich die gleiche Variable (i) für X- und Y-Werte verwendet ?
LG,
Tanja

Bild

Betrifft: AW: Probleme bei Loop-Erstellung (Code funktioniert)
von: Tanja
Geschrieben am: 26.11.2015 14:09:17
Hallo Rudi,
jetzt habe ich es hinbekommen !
Nochmals vielen Dank für die schnelle Hilfe !
LG,
Tanja

 Bild

Beiträge aus den Excel-Beispielen zum Thema "Zelle Splitten"