AW: Letzte Datenpunkte beschriten
15.11.2019 15:29:42
Beverly
Hi Thomas,
der Fehler tritt auf, wenn in einer der Spalten in Tabelle "Daten" auschließlich Fehlerwerte stehen. Weshalb es zu einem Fehler kommt kann man prüfen, indem man den Code im Einzelschrittmodus durchläuft und sich die Inhalte der Variablen in der betreffenden Codezeile anschaut - was bei dir i und p wären. Die Variable i ist immer belegt, da der Zähler ja von der letzten bis zur erstern Datenreihe läuft und somit nur die Datenreihen angesprochen werden die im Diagramm auch tatsächlich vorhanden sind. Also muss der Fehler bei der Variablen p liegen - und siehe da: wenn die Datenreihe nur Fehlerwerte beinhaltet beträgt p am Ende des Schleifendruchlaufs 0 und einen Datenpunkt 0 gibt es selbstverständlich nicht, ergo besagte Fehlermeldung. Aus diesem Grund muss noch eine Prüfung eingebaut werden, dass p immer größer 0 sein muss.
Case Worksheets("0°_60°C").Range("B9"), Worksheets("0°_60°C").Range("C9"), _
Worksheets("0°_60°C").Range("D9"), Worksheets("0°_60°C").Range("E9"), _
Worksheets("0°_60°C").Range("F9"), Worksheets("0°_60°C").Range("G9"), _
Worksheets("0°_60°C").Range("H9")
strY = Split(.SeriesCollection(i).Formula, ",")(2)
Set rngY = Range(strY)
For p = rngY.Cells.Count To 1 Step -1
If Not IsError(Range(strY).Cells(p).Value) Then
Exit For
End If
Next p
If p > 0 Then
.SeriesCollection(i).HasDataLabels = True
.SeriesCollection(i).DataLabels.Delete
With .SeriesCollection(i).Points(p)
.HasDataLabel = True
With .DataLabel
.ShowSeriesName = True
.ShowValue = True
.Interior.Color = RGB(255, 255, 255)
With .Format.Line
.Visible = msoTrue
.ForeColor.RGB = RGB(0, 0, 0)
End With
End With
End With
End If
End Select
Dabei kann man auch noch das Hinzufügen und wieder Löschen der Beschriftungslabel innerhalb der Fehlerbehandlung ausführen, weil dies andernfalls ja nicht erforderlich ist und den Code nur ausbremst.
Wenn du nicht die Zellbezüge sondern die definierten Namen in die Case-Zeile schreiben willst, dann halt einfach
Case Range("DeinName1"), Range("DeinName2"), Range("DeinName3") usw.