AW: Typen unverträglich
20.03.2026 18:25:59
daniel
Hi
du bekommst den Fehler, wenn die Spalte D leer oder oder nur mit einem Wert in D1 befüllt ist.
die Fehlerursache liegt hier:
Public Sub BerechneCodesRanking(ws As Worksheet)
...
' Daten aus Spalte D einlesen
GesamtZeilen = ws.Cells(ws.Rows.Count, "D").End(xlUp).Row
Eingabearray = ws.Range("D1:D" & GesamtZeilen).Value
in diesem Fall wird GesamtZeilen = 1 und dein Zellbereich umfasst nur eine Zelle.
Dann entsteht bei der Zuweisung an die Variable kein Array, sondern nur eine normale Wertvariable.
Der Fehler kommt, wenn du dann die Wertvariable wie ein Array behandelst: Eingabearray(i, 1)
du müsstest diesen Fall dann gesondert abfragen und das weitere Makro nur ausführen, wenn GesamtZeilen größer 1 ist.
denn wenn du nur einen Wert hast, macht ein Ranking auch keinen Sinn.
(wobei es wahrscheinlich sinnvoller ist, diese Abfrage schon im übergeordneten Marko zu machen)
Wenn trotzdem mit nur einem Wert weiter gearbeitet werden soll, müsstest du den Einzelwert in ein Array um wandeln, damit dein Marko dann normal weiter läuft und du nicht mehr zwischen Einzelwert und Array unterscheiden musst.
if GesamtZeilen = 1 then
Redim EingabeArray(1 to 1, 1 to 1)
EingabeArray(1, 1) = ws.Range("D1").value
else
Eingabearray = ws.Range("D1:D" & GesamtZeilen).Value
End if
Gruß Daniel
ps:
Fehlerbehandlungsroutinen sind meistens unnötig, denn wenn ein Fehler auftritt, verliert man durch sie wichtige Informationen, die man braucht um die Fehlerursache zu finden.