ich bin am verzweifeln. Der dynamische aufbau der Graphen funktioniert nicht so wie ich mir das gedacht habe.
Folgende Tabelle soll in mehreren Graphen dargestellt werden, 1. Total, 2 letzten 5 Jahreund drittens die letzten 2 Jahre
'P-date' ;200501;200502;200503;....;201603;201604
'05 Prior';0,00% ;0,001%;0,004%;....;0,006%;0,004%
'200501' ; ;0,001%;0,007%;....;0,004%;0,003%
'200502' ; ; ;0,000%;....;0,000%;0,001%
'200503' ; ; ; ; ; ;
.
.
'201603' ; ; ; ; ;0,000%;0,003%
'201604' ; ; ; ; ; ;0,001%
hierzu noch etwas, was sich ändern kann in den Tabellen, ist, das der Wert in Spalte z.B. 201604 und Reihe 201604 leer sein kann, weil es keine werte gibt, oder ist 0
Dannn fliegt das Makro unten auf die Nase.
Hier ist es dargestellt für alle Werte in der Tabelle
' Diagramm creation
StartRow = 2
-- Diagramm fängt erst mit den Werten der 2.ten Reihe an
' SDR PrepayRate Static
Set wksData = Worksheets(orgname)
-- Arbeitsblatt defienieren
'
' Freeze Panes, first row, first column
'
Cells.EntireColumn.AutoFit
Sheets(orgname).Select
ActiveWindow.FreezePanes = False
ActiveWindow.ScrollRow = 1
ActiveWindow.ScrollColumn = 1
ActiveWindow.SplitRow = 1
ActiveWindow.SplitColumn = 1
ActiveWindow.FreezePanes = True
With wksData
nRowsCnt = .Cells(.Rows.Count, 1).End(xlUp).Row
-- feststellen der maximalen Anzahl der darzustellenden Reihen
nColsCnt = .Cells(1, .Columns.Count).End(xlToLeft).Column
-- feststellen der maximalen Anzahl der darzustellenden Spalten
Set Bereich = .Range(.Cells(StartRow, 2), .Cells(nRowsCnt, nColsCnt))
-- Datenbereich zur Darstellung definieren
-- hier wird dann der Bereich entsprechend auf das gewünschte diagram angepasst nRowsCnt/nColsCnt -59 und nRowsCnt/nColsCnt-24
Bereich.Activate
-- nur Temporär
End With
Worksheets(graphsheet).Activate
-- aktivieren des Graphiksheets auf dem die Diagramme dargestellt werden
Worksheets(graphsheet).ChartObjects(graphname).Act ivate
-- aktivieren des Chartobjectes mit dem Namen graphname
With ActiveChart
.ChartType = xlLineMarkers
.SetSourceData Source:=Bereich
.PlotBy = xlRows
.HasLegend = True
.HasTitle = True
.ChartTitle.Text = graphname & " Static"
.ChartArea.Select
.Axes(xlCategory).Select
.Axes(xlCategory).TickLabelSpacing = 3
-- bis hier ist alle gut denke ich
-- ab hier fangen die Probleme an Beschreibung siehe unten
1) .SeriesCollection(1).XValues = wksData.Range(wksData.Cells(2, 1), wksData.Cells(nRowsCnt, 1))
For RowCount = 2 To nRowsCnt
.SeriesCollection(RowCount - 1).Name = wksData.Cells(RowCount, 1).Value
Next RowCount
.Legend.Select
Selection.Width = 179
End With
Set Bereich = Nothing
Probleme:
zu 1) wksData.Range(wksData.Cells(2, 1), wksData.Cells(nRowsCnt, 1))
liefert in den Values2 ein Array mit 137 Werten von 05 Prior bis 201604 das ist auch korrekt
die Zuweisung
.SeriesCollection(1).XValues = ...
liefert jedoch nur ein Array von 135 Werten von 05 Prior bis 201602 das ist nicht korrekt
Warum?
Dadurch kommt es dann inder nächsten For schelife natürlich zu einem Laufzeitfehler 1004 = ungultiger Parameter
denn das Array ist ja nur 135 groß und nicht 137.
Das ganze ist dynamisch und mit jedem Lauf unterschiedlich.
Wo ist mein gedanklicher Fehler?
Wäre für Hilfe echt super dankbar
Gruß
Willi