|  
                                             Guten Abend zusammen, 
ich arbeite grad an einem Script welches folgenes machen soll: 
Ich habe 3 Worksheets mit gleich formatierten Daten mit jeweils 5 Spalten. Innerhalb des Worksheets sind die Spalten gleichlang. Aber über verschiedene WS hinweg kann die Länge variieren. 
Im letzten Worksheet "Diagramm" Sollen nun Graphen in EINEM Diagramm erstellt werden. Die DAten dazu kommen aus den anderen Worksheets. 
Also: 
Worksheet1 | Worksheet2 | Diagramm 
  
Mein Script funktioniert auch bisher sehr gut. Das einzige was nicht funktionieren will ist dass alle Graphen in einem Diagramm landen. Ich bekomme immer pro Worksheet ein Diagramm. 
Der Fehler müsste meiner Meinung nach irgendwo bei "With .SeriesCollection(1) " liegen welches in in die Schleife einbauen muss. Wenn ich aber statt der 1 eine Variable vergebe bricht der Code ab. 
  
Hat jemand einen Tipp? 
Danke, 
viele Grüße 
 
  
Sub DiagrammeAlleWorksheets()
'
' Makro10 Makro
'
'
Dim r_cnt As Integer 'row count
Dim c_cnt As Integer 'column count
Dim Datenzeile1 As Integer
Dim XSpalte As Integer
Dim ws As Worksheet
Dim wsName As String
Dim wsAnzahl As String
Dim NoWS As Integer         'Laufvariable Anzahl Worksheets in Schleife
Dim i As Integer
Dim lngReihe As Long
   'Diagramme einfügen
       
    
    'r_cnt = Cells(Rows.Count, 1).End(xlUp).Row 'Zeilenende suchen
    Datenzeile1 = 2 'Diagrammstartzeile
    XSpalte = 1
    c_cnt = 2 'YSpalte
    
    'Anzahl Worksheets im Workbook
    wsAnzahl = ActiveWorkbook.Worksheets.Count
    
       
    'Ab hier werden die Diagramme erstellt
    i = 1
    For NoWS = 1 To wsAnzahl - 1
    Sheets(NoWS).Select
    r_cnt = Cells(Rows.Count, 1).End(xlUp).Row 'Zeilenende suchen
           With Sheets("Diagramm").Shapes.AddChart.Chart
            .ChartType = xlXYScatterSmoothNoMarkers
            
            If .SeriesCollection.Count > 0 Then
                For lngReihe = .SeriesCollection.Count To 1 Step -1
                .SeriesCollection(lngReihe).Delete
                Next lngReihe
            End If
            .SeriesCollection.NewSeries
            With .SeriesCollection(1) 
            .Name = Sheets(NoWS).Name   
            .XValues = "=" & Sheets(NoWS).Name & "!" & Range(Cells(Datenzeile1, XSpalte), Cells(r_cnt, XSpalte)).Address
            .Values = "=" & Sheets(NoWS).Name & "!" & Range(Cells(Datenzeile1, c_cnt), Cells(r_cnt, c_cnt)).Address
            End With
        End With
                i = i + 1
                '.HasLegend = False
        
    Next
    MsgBox i
 
End Sub
  
     |