Sehr geehrte VBA-Anhängerinnen,
ich bin nun seit einigen Wochen an einem Thema, dass ich so gut wie mir möglich versucht habe zu lösen. Es handelt sich um den Laufzeitfehler 13 (Typen unverträglich) bei der Verarbeitung von Charts in VBA. Genauer handelt es sich um die Zuweisung der XValues zu einem Chartobject. Die Felder, die beim ersten Schleifendurchlauf angesprochen werden, haben den Wert 1.
Ich finde leider keinen "Code-Button" und schreibe deswegen den Programmcode einfach untereinander.´
Beim 1. Durchlauf kommt man direkt zu der Stelle, die den Fehler erzeugt.
'signalLegende() - Gibt die Namen für die Legende wieder
'zellen() - Gibt die Positionen der auszulesenden Zellen wieder
1 With Worksheets(ActiveSheet.name)
2
3 For i = 1 To anzahlTabellen
4 For j = 1 To anzahlSignale(i)
5 Select Case nurZeitOderNurWert(j, i)
6 Case 0
7 If (signalLegende(j, 2, i) <> "U" And signalLegende(j, 2, i) <> "u") Then
8 If (Not ysnDiagrammtypLinien) Then
9 '-------------------------------------------------------------------------------------------------------------10
11Hier tritt der Fehler auf
12 .ChartObjects(1).Chart.SeriesCollection(signalLegende(j, 1, i)).XValues = _
13 .Range(.Cells(zellen(j, 1, i), zellen(j, 2, i)), _
14 .Cells(zellen(j, 1, i), zellen(j, 2, i)))
15'-------------------------------------------------------------------------------------------------------------16
17 Else
18 .ChartObjects(1).Chart.SeriesCollection(signalLegende(j, 1, i)).XValues = _
18 .Range(.Cells(zellen(1, 1, i), zellen(1, 2, i)), _
19 .Cells(zellen(1, 1, i), zellen(1, 2, i)))
20 End If
21 .ChartObjects(1).Chart.SeriesCollection(signalLegende(j, 1, i)).Values = _
22 .Range(.Cells(zellen(j, 1, i), zellen(j, 2, i) + 1), _
23 .Cells(zellen(j, 1, i), zellen(j, 2, i) + 1))
24 End If
25 Case 2
26 .ChartObjects(1).Chart.SeriesCollection(signalLegende(j, 1, i)).XValues = _
27 .Range(.Cells(zellen(1, 1, i), zellen(1, 2, i)), _
28 .Cells(zellen(1, 1, i), zellen(1, 2, i)))
29 .ChartObjects(1).Chart.SeriesCollection(signalLegende(j, 1, i)).Values = _
30 .Range(.Cells(zellen(j, 1, i), zellen(j, 2, i)), _
30 .Cells(zellen(j, 1, i), zellen(j, 2, i)))
31 Case Else
32 End Select
33 Next j
34 Next i
Es wäre wunderbar, wenn ihr mir helfen könntet.
Liebe Grüße
Sebastian |