Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Anzeige
Inhaltsverzeichnis

Typen unverträglich

Forumthread: Typen unverträglich

Typen unverträglich
20.03.2026 17:59:40
Christian
https://www.herber.de/bbs/user/180425.xlsm

Hallo,

warum bekomme ich einen Laufzeitfehler 13, wenn ich etwas in Spalte D eintrage?
Der Fehler kommt, seit ich einmal die kompletten Spalten D und E gelöscht habe,
an dem Makro habe ich seit es das letzte mal funktioniert hat, nichts geändert.

Danke
Christian
Anzeige

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
ok, stelle grad fest
20.03.2026 18:01:56
Christian
in der Datei in die hier zum Download bereit steht tritt das Problem nicht auf, in der Datei die ich hochgeladen habe aber schon, ich kann das Problem also beheben, in dem ich eine neue Datei erstelle. Problem damit gelöst
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.



Anzeige
AW: Typen unverträglich
20.03.2026 18:34:45
Christian
Hallo Daniel,

ich muss zugeben, daran hab ich nicht gedacht. Danke für die Erklärung.
Und entsprechend habe ich dann auch nicht probiert noch weitere Werte einzugeben.

Aber mit dem zweiten Wert funktioniert es dann und es wird wieder korrekt berechnet.

Danke dir auf jeden Fall

Deine Tipps werde ich mir jetzt mal noch genauer anschauen und mal schauen wie ich sie umgesetzt bekomme. Melde mich dann nochmal
Christian
Anzeige
Testergebnis
20.03.2026 19:03:39
Christian
Hallo Daniel,

habe deinen Vorschlag jetzt erstmal testweise direkt nach dem ermitteln der letzten Zeile in Spalte D eingebaut, so funktioniert es einwandfrei.
Ob ich die Berechnung für eine Zeile weglasse, überlege ich mir noch.

Danke und noch einen schönen Abend
Christian
es tritt doch auf, hatte die Makros nicht zugelassen
20.03.2026 18:05:18
Christian
brauche also doch Hilfe
Anzeige
Anzeige
Anzeige
Live-Forum - Die aktuellen Beiträge
Datum
Titel
14.05.2026 13:31:09
14.05.2026 09:50:42
13.05.2026 19:14:18