AW: Diagramm SeriesCollection(1).Values lesen und bear
28.02.2013 08:30:51
fcs
Hallo Muge,
hier mein Lösungsvorschlag.
Das Makro löst die Formel der Datenreihe in die Einzelbestandteile auf, ermittelt die Letzte Datenzeile der Y-Werte-Spalte und aktualisiert dann die Formel der Datenreihe.
Gruß
Franz
Sub Diagramm_aktualisieren()
Dim objChart As Chart
Dim objSerie As Series
Dim wks As Worksheet
Dim strRangeX As String, strRangeY As String
Dim lngSpalteX As Long, lngSpalteY As Long
Dim rngRangeX As Range, rngRangeY As Range
Dim lngZeile_1 As Long, lngZeile_L As Long
Dim strTab As String, wksQuelle As Worksheet
Dim strSourceData As String
Set wks = ActiveSheet
Set objChart = wks.ChartObjects(1).Chart
Set objSerie = objChart.SeriesCollection(1)
With objSerie
strSourceData = .FormulaLocal
strRangeX = VBA.Split(strSourceData, ";")(1)
strRangeY = VBA.Split(strSourceData, ";")(2)
strTab = Left(strRangeX, InStr(strRangeX, "!") - 1)
If Left(strTab, 1) = "'" Then
strTab = Mid(strTab, 2, Len(strTab) - 2)
End If
strRangeX = Mid(strRangeX, InStr(strRangeX, "!") + 1)
strRangeY = Mid(strRangeY, InStr(strRangeY, "!") + 1)
Set wksQuelle = ActiveWorkbook.Worksheets(strTab)
With wksQuelle
lngZeile_1 = .Range(strRangeY).Row
lngSpalteX = .Range(strRangeX).Column
lngSpalteY = .Range(strRangeY).Column
lngZeile_L = .Cells(.Rows.Count, lngSpalteY).End(xlUp).Row
Set rngRangeX = .Range(.Cells(lngZeile_1, lngSpalteX), _
.Cells(lngZeile_L, lngSpalteX))
Set rngRangeY = .Range(.Cells(lngZeile_1, lngSpalteY), _
.Cells(lngZeile_L, lngSpalteY))
End With
.FormulaLocal = VBA.Split(strSourceData, ";")(0) & ";" _
& "'" & wksQuelle.Name & "'!" & rngRangeX.AddressLocal & ";" _
& "'" & wksQuelle.Name & "'!" & rngRangeY.AddressLocal & ";" _
& VBA.Split(strSourceData, ";")(3)
End With
End Sub