Hallo Martin,
danke für dein Verständnis. Es kann durchaus an den verschiedenen Excel-Versionen liegen. Bei mir klappt es so wie gewünscht, weil ich ein altes stabiles Excel verwende. Die Anschaffung von Office 2016 steht bei mir noch auf dem Plan, aber was ich hier immer so lese und höre, scheint es damit öfter mal Probleme zu geben. Auf Arbeit haben einige Kollegen wieder Office 2010 eingeführt, nachdem es bei 2016 aus nicht erkennbaren Gründen zu Programm-Abstürzen kam. Ich selbst hab auf dem Firmen-PC jedoch bislang keine Probleme mit 2016.
Ich kann verstehen, wenn sich bei dir inzwischen etwas Frust breitmacht. Aber leider kann ich dir hier aufgrund der unterschiedlichen Versionen nicht mehr weiterhelfen. Meine Codeänderungen sollen dir ja auch nur als Beispiel dienen. Letztlich musst du entscheiden, ob du das Blatt nun schützen willst (dann brauchst du Application Protect bzw. Unprotect ggf mit Parametern dahinter, die du per Makrorekorder aufzeichnen kannst) oder ob dir die Meldung "Bitte Userform benutzen" wichtiger ist (dann brauchst du Application.EnableEvents und On error goto irgendwas)
Zu 1: wer gibt schon bei Datum eine 1 ein? Aber gut. Für den Fall kannst du den Code wie folgt ändern:
If IsDate(TextBox5) Then TextBox5 = Format(TextBox5, "yyyy.mm.dd") Else MsgBox "Geben Sie ein Datum ein!"
Die Fehlermeldung kommt deshalb nicht, weil nach dem Umwandeln die Textbox den Fokus behält. Wenn du das nicht willst, dann lösche wieder die Zeile Cancel=True. Steht erstmal ein Datum drin und ist dieses zu Früh, kommt auch wieder die Fehlermeldung beim Verlassen der Textbox.
zu 2: Sag ich ja, bei aktivem Blattschutz ist es nicht möglich eine Normal-Eingabe zu machen, von daher ist der Code "Bitte Userform benutzen" überflüssig und kann gelöscht werden.
Gruß Mr. K.