Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1944to1948
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

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.

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
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
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

305 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige