Es besteht für mich die Aufgabe, mehrere gleiche Netzdiagramme (am Ende sind es 35 Stück) zu dynamisieren. Es soll in VBA mit Hilfe einer For Next-Schleife pro Diagramm
geändert werden.
Als vorbereitende Arbeit habe ich ein Netzdiagramm mit den beiden Textfeldern erstellt und anschließend kopiert.
Jetzt zu meinem Problem. Das erste Diagramm wird absolut richtig verändert, doch ab dem 2ten Diagramm findet er die beiden Textfelder nicht. VB stoppt mit folgender Meldung:
Laufzeitfehler -2147024809 (80070057):
Der Index in der angegebenen Sammlung ist außerhalb des zulässigen Bereichs.
in der Zeile "oDia.Chart.Shapes(1).TextFrame.Characters.Text = TempText & "x°C""
Wenn ich mir im ersten Schleifendurchlauf über das "Lokal-Fenster" das ChartObject "oDia" ansehe finde ich die beiden Textfelder. im 2ten und allen weiteren finde ich dort keine Textfelder.
Kann mir bitte jemand weiterhelfen. Ich finde den Fehler nicht.
Der Code sieht wie folgt aus
Sub DiagrammQuelleAendern()
Dim oBlattDiag As Worksheet
Dim oBlattWerte As Worksheet
Dim oDia As ChartObject
Dim ns As Series
Dim iZeile As Integer
Dim iSpalte As Integer
Dim arrDiag
Dim i As Integer
Dim OffsetDatenZeile As Integer
Dim TempText As String
TempText = "Durchschnittliche" & Chr(10) & "Tagestemperatur" & Chr(10)
OffsetDatenZeile = 3
Set oBlattDiag = Worksheets("Diagramm")
Set oBlattWerte = Worksheets("Werte")
For i = 1 To 4
iZeile = OffsetDatenZeile + i
Set oDia = oBlattDiag.ChartObjects(i)
With oBlattWerte
'---- Datenreihe Wert ändern
oDia.Chart.SeriesCollection(1).Values = .Range(.Cells(iZeile, 2), .Cells(iZeile, 25) _
)
'---- Beschriftung der Rubrikenachse X
oDia.Chart.SeriesCollection(1).XValues = .Range(.Cells(2, 2), .Cells(2, 25))
'---- Diagrammtitel
oDia.Chart.SeriesCollection(1).Name = .Cells(iZeile, 1)
End With
'---- Text für "Text Box 1" ändern
oDia.Chart.Shapes(1).TextFrame.Characters.Text = TempText & "x°C"
'---- Text für "Text Box 2" ändern
oDia.Chart.Shapes(2).TextFrame.Characters.Text = oDia.Index & Chr(10) & oDia.Name
'---- Diagramm formatieren
DiagFormatDaten oDia.Chart
Set oDia = Nothing
MsgBox "Diagramm " & i & " ist fertig!"
Next i
Set oBlattDiag = Nothing
Set oBlattWerte = Nothing
End Sub
Vielen Dank im Voraus
TIPETAN