Live-Forum - Die aktuellen Beiträge
Datum
Titel
24.04.2024 19:29:30
24.04.2024 18:49:56
Anzeige
Archiv - Navigation
1904to1908
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Arbeitsblatt an das Ende stellen

Arbeitsblatt an das Ende stellen
30.10.2022 05:40:17
Rudi
Hallo!
Ich würde gerne ein Neues Arbeitsblatt an das Ende der Mappe einfügen.
Was ist hier verkehrt?
Sub Neues_Arbeitsblatt_ans_Ende()
Dim dDate As Double
Dim a1 As Double
With ThisWorkbook
dDate = CDate(Right(.Sheets(.Sheets.Count).Name, 10))
.Worksheets(.Sheets.Count).Copy After:=.Sheets(.Sheets.Count)
With ActiveSheet
.Name = Format(dDate + 1, "DD.MM. - ") & _
Format(DateSerial(Year(dDate), Month(dDate) + 2, 0), "DD.MM.YYYY")
End With
With ActiveSheet
Range("A1") = ActiveSheet.Name
End With
End With
Ich verstehe es nicht!
Lieben Gruß
Rudi

13
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
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
Anzeige
meine Erklärung...
30.10.2022 07:54:04
Oberschlumpf
...ist nich nur in den raum gestellt - sie funktioniert - wieso ich das weiß? - ich habs vorher getestet
aber wieso ich von dir keine Antwort bekomme, bleibt mir ein rätsel :-/
AW: Arbeitsblatt an das Ende stellen
30.10.2022 06:39:55
Matthias
Hallo.
Was ist hier verkehrt?
1. End Sub fehlt
2. Der Code macht wahrscheinlich geanau das was Du willst
es muss nur ein korrektes Datum als Registername vorhanden sein.
Ansonsten zeig doch einfach Deine Mappe, es müssen ja keine Daten drin sein.
MfG Matthias
AW: Arbeitsblatt an das Ende stellen
30.10.2022 07:35:31
Rudi

End sub
Funktioniert leider auch nicht
LG
Rudi
AW: Arbeitsblatt an das Ende stellen
30.10.2022 07:37:24
onur
Dann poste doch endlich die (Beispiels-) Datei. Mehr gibt die Kristallkugel nicht her.
Anzeige
bei mir funktioniert alles, owT
30.10.2022 07:52:49
Matthias
AW: Arbeitsblatt an das Ende stellen
30.10.2022 07:24:57
onur

With ActiveSheet
Range("A1") = ActiveSheet.Name
End With
Wozu "With", wenn du "ActiveSheet" doch ausschreibst? Ausserdem : Gehört evtl ein Punkt vor "Range" ?
AW: Arbeitsblatt an das Ende stellen
30.10.2022 08:01:36
Rudi

dDate = CDate(Right(Replace(.Sheets(.Sheets.Count).Name, ".", "/"), 10))
Hi
Ich bekomme hier einen Laufzeitfehler 13 angezeigt, unverträgliche Typen
Vg
Rudi
AW: Arbeitsblatt an das Ende stellen
30.10.2022 08:04:17
Oberschlumpf
und welchen Teil von - mehrmals erwähnt - "zeig mal eine Bsp-Datei" hast du nicht verstanden?
AW: Arbeitsblatt an das Ende stellen
30.10.2022 08:35:13
Rudi
https://www.herber.de/bbs/user/155929.xlsm
Ich habe eine Beispieldatei jetzt hochgeladen, wäre wirklich super, wenn das Problem gelöst werden könnte. Das erspart mir sehr viel Arbeit!
Viele Grüße
Rudi
Anzeige
AW: Arbeitsblatt an das Ende stellen
30.10.2022 08:44:32
onur
Weiss nicht, was du meinst. Das Makro läuft fehlerfrei durch.
AW: Arbeitsblatt an das Ende stellen
30.10.2022 09:01:59
GerdL
Moin zusammen!

Sub Neues_Arbeitsblatt_ans_Ende2()
Dim dDate As Date
With ThisWorkbook
If Not IsDate(Right(.Sheets(.Sheets.Count).Name, 10)) Then Exit Sub
dDate = CDate(Right(.Sheets(.Sheets.Count).Name, 10))
.Worksheets(.Sheets.Count).Copy After:=.Sheets(.Sheets.Count)
End With
With ActiveSheet
.Name = Format(dDate + 1, "DD.MM. - ") & _
Format(DateSerial(Year(dDate), Month(dDate) + 2, 0), "DD.MM.YYYY")
.Range("A1") = .Name
End With
End Sub
Gruß Gerd
AW: Arbeitsblatt an das Ende stellen
30.10.2022 09:15:50
Rudi
Super Gerd,
Dein Code hat funktioniert. Musste noch ein End Sub einarbeiter. Aber total super!
LG
Rudi
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige