Microsoft Excel

Herbers Excel/VBA-Archiv

Probleme bei Loop-Erstellung (Code funktioniert)

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

  

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



  

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


  

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




  

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


  

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