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

Forumthread: Datumeingabe einschränken mit VBA - Fehlermeldung

Datumeingabe einschränken mit VBA - Fehlermeldung
06.09.2023 15:34:04
glodiux
Guten Tag,
folgender Code soll ermöglichen, dass in einer bestimmten Zeile der Wertebereich des Datums auf den Zeitraum des jeweiligen Monats begrenzt wird:


Dim Bereich As Range
Dim monat As Integer
Dim enddatum As Date
monat = 1
For Each ws In ThisWorkbook.Worksheets
enddatum = DateSerial(2023, monat, 1)
enddatum = WorksheetFunction.EoMonth(enddatum, 0)
With ws.Range("A3").Validation
.Add Type:=xlValidateDate, AlertStyle:=xlValidAlertStop, Operator:=xlBetween, _
Formula1:="01." & Format(monat, "00") & ".2023", Formula2:=enddatum
.ErrorMessage = "Falsche Datumeingabe oder falsches Format: dd.mm.yyyy"
.ShowError = True
.ShowInput = True
End With
monat = monat + 1
Next ws

Beim Ausführen erschreint dann folgende Fehlermeldung:
Laufzeitfehler '1004':
Anwendungs- oder objektdefinierter Fehler
Gerne nehme ich Rückfragen entgegen,
vielen Dank im voraus.
Anzeige

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

Betreff
Datum
Anwender
Anzeige
AW: Datumeingabe einschränken mit VBA - Fehlermeldung
06.09.2023 15:46:00
ralf_b
wenn man das aufzeichnet, dann wird das Datum im amerikanischen Format mit Schrägstrichen aufgenommen. vielleicht liegts nur daran das du es im deutschen Format verwendest..
Datumeingabe einschränken mit VBA - Fehlermeldung
06.09.2023 15:50:41
daniel
Hi
VBA und Excel sprechen meistens Englisch miteinander.
Dh wenn du, so wie hier ein Datum als Text angibst, muss es in der amerikanischen Datumsschreibweise geschrieben sein, also mit "/" als Trennzeichen und in der Reihenfolge Monat/Tag/Jahr.
Die führenden Nullen brauchst du hingegen nicht:

Formula1:=monat & "/1/2023"


Gruß Daniel
Anzeige
Datumeingabe per VBA auf aktuellen Monat beschränken
06.09.2023 15:58:11
NoNet
Hallo Glodiux,

versuche es mal mit folgendem Code :

Sub DatumSchranke()

Dim Bereich As Range
Dim monat As Integer
'Dim enddatum As Date
monat = Month(Now)
For Each ws In ThisWorkbook.Worksheets
'enddatum = DateSerial(2023, monat, 1)
'enddatum = WorksheetFunction.EoMonth(enddatum, 0)
With ws.Range("A20").Validation
.Delete
.Add Type:=xlValidateDate, AlertStyle:=xlValidAlertStop, Operator:=xlBetween, _
Formula1:=Format(DateSerial(Year(Now), Month(Now), 1), "MM\/DD\/YYYY"), _
Formula2:=Format(DateSerial(Year(Now), Month(Now) + 1, 1) - 1, "MM\/DD\/YYYY")
.ErrorMessage = "Falsche Datumeingabe oder falsches Format: dd.mm.yyyy"
.ShowError = True
.ShowInput = True
End With
monat = monat + 1
Next ws
End Sub


Salut, NoNet
Anzeige
Datumeingabe einschränken mit VBA - Fehlermeldung
06.09.2023 16:47:41
onur
Wenn jeder Monat ein eigenes Blatt hat und dieses z.B. "1", "2" oder "12" heisst, DAS ins Modul "DieseArbeitsmappe":
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal target As Range)

If target.Row > 3 Or target.Column > 1 Then Exit Sub 'Zelle A3
Application.EnableEvents = False
If Month(target) > CInt(Sh.Name) Or Year(target) > 2023 Or Not IsDate(target) Then MsgBox "Nicht zulässig": target = ""
Application.EnableEvents = True
End Sub
Anzeige
Korrektur des Codes : Nächster Monat auf nächstem Blatt
06.09.2023 16:02:37
NoNet
Hallo,

ich hatte übersehen, dass wohl auf den Folgeblättern jeweils der folgende Monat als gültiges Datum angewendet werden soll, oder?!?!?

Dann bitte diesen Code mit iterierendem Monat :

Sub DatumSchranke()

'Dim Bereich As Range
Dim monat As Integer
'Dim enddatum As Date
monat = Month(Now)
For Each ws In ThisWorkbook.Worksheets
'enddatum = DateSerial(2023, monat, 1)
'enddatum = WorksheetFunction.EoMonth(enddatum, 0)
With ws.Range("A20").Validation
.Delete
.Add Type:=xlValidateDate, AlertStyle:=xlValidAlertStop, Operator:=xlBetween, _
Formula1:=Format(DateSerial(Year(Now), monat, 1), "MM\/DD\/YYYY"), _
Formula2:=Format(DateSerial(Year(Now), monat + 1, 1) - 1, "MM\/DD\/YYYY")
.ErrorMessage = "Falsche Datumeingabe oder falsches Format: dd.mm.yyyy"
.ShowError = True
.ShowInput = True
End With
monat = monat + 1
Next ws
End Sub

Salut, NoNet
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige