AW: Arbeitsblatt an das Ende stellen
30.10.2022 06:39:33
Oberschlumpf
Hi Rudi,
zu Beginn erst mal eine Bitte von mir:
Schau dir mal deinen Beitrag, bzw den Code im Beitrag an.
Sehr leserlich wird das nicht dargestellt, oder?
Wenn du wieder mal Code im Beitrag zeigen willst, nutz bitte den gelben Button "Code pre code", der oberhalb des Eingabefeldes für Beiträge zu finden ist - ist nur ne Bitte von mir, tun + lassen kannst du natürlich immer, was du willst.
So, nun zu deiner Frage.
Der Fehler "Typen unverträglich", der zumindest bei mir nach Start deines Makros erscheint, zeigt, dass mindestens einer der verwendeten Parameter in der Fehler-Code-Zeile nicht dem Datentyp entspricht, welche die verwendeten Funktionen CDate(), Right() oder Sheets() erwarten.
Ich hab diese Zeile...
dDate = CDate(Right(.Sheets(.Sheets.Count).Name, 10))
...mal reduziert auf...
dDate = CDate("30.10.2022")
Auch hier kommt es zum Fehler "Typen unverträglich".
Somit weiß ich schon mal, dass die Namen deiner Tabellenblätter das Datum in dieser gezeigten Schreibweise enthalten.
Doof ist aber, dass im Datum ein . (Punkt) enthalten ist.
VBA ist Englisch, und der . wird im Englischen als Dezimaltrennzeichen verwendet.
Und der Datumstrenner im Englischen ist das Zeichen /
Und siehe da, dieser Befehl...
dDate = CDate("30/10/2022")
...wird korrekt ohne Fehlermeldung ausgeführt - Ergebnis für dDate = 44864
Und somit weiß ich nun, dass - zumindest für die Verwendung im VBA-Code - jeder . im jeweiligen Datum eines Blattnamens in / umgewandelt werden muss.
So änder mal diese Zeile...
dDate = CDate(Right(.Sheets(.Sheets.Count).Name, 10))
...um in...
dDate = CDate(Right(Replace(.Sheets(.Sheets.Count).Name, ".", "/"), 10))
...und starte erneut dein Makro - vielleicht beim ersten Mal mit F8 = Schritt für Schritt, damit du verfolgen kannst, was passiert.
Konnte ich helfen?
Nein?
Dann zeig bitte per Upload eine Bsp-Datei mit Bsp-Daten, so dass man sehen kann, was nicht funktioniert.
Ciao
Thorsten