Datumseingabe erzwingen

Hallo Excel-Experten!

Ich möchte mit Excel 2003 ein Kassabuch erstellen. Jetzt stehe ich vor folgendem Problem: In jeder Zeile soll in der A-Spalte ein Datum stehen. Ich möchte also den Benutzer dazu zwingen, wenn er einen neuen Datensatz beginnt, zuerst in die A-Spalte ein Datum einzugeben, das gleich oder größer ist als das in der vorigen Zeile. Andere Zahlen, Texte oder etwa Nullwerte sollten aber nicht erlaubt sein.

Hallo Alex!

Ich möchte mit Excel 2003 ein Kassabuch erstellen. Jetzt stehe
ich vor folgendem Problem: In jeder Zeile soll in der A-Spalte
ein Datum stehen. Ich möchte also den Benutzer dazu zwingen,
wenn er einen neuen Datensatz beginnt, zuerst in die A-Spalte
ein Datum einzugeben, das gleich oder größer ist als das in
der vorigen Zeile. Andere Zahlen, Texte oder etwa Nullwerte
sollten aber nicht erlaubt sein.

Wie Du das Problem in Excel lösen kannst, weiß ich leider nicht. Mir kam nur spontan der Gedanke, dass ich für ein Kassenbuch Access verwenden würde. Und da ist es kein Problem, solch eine Zwangseingabe zu verlangen.
Oder bist Du auf Excel festgelegt?

Lg, Nic

Hallo Nic!

Ja, daran hab ich auch gedacht, allerdings hab ich kein Access…

Ja, daran hab ich auch gedacht, allerdings hab ich kein
Access…

Falls Du Student bist, könnte es da ne Möglichkeit geben, Access kostenlos zu bekommen. Manche Unis haben da so nen komischen Vertrag mit MS, durch den Studenten Access kostenlos bekommen können. Also, falls Du studierst, erkundige Dich mal, ob es das an eurer Uni gibt.
Lg, Nic

Hallo Alex,

am einfachsten ginge das mit

=wenn(a2="";„Kein Datum!“;"")

das schreibst du einfach in eine Nebenzelle in der Zeile des Datensatzes, zb hier F2. Eventuell noch fett und rot formatieren, dann fällt es wohl genug auf.

Ist zwar kein direkter Zwang, aber sollte doch den Zweck erfüllen, oder?

um zu verhindern, dass andere Zahlen, Texte oder Nullwerte als Datum eingetragen werden, definierst du einfach unter Daten=>Gültigkeit was gehen soll und was nicht.

Freundliche Grüße

Jerry

Hallo Alex,

habe unter EXCEL97 mal entsprechende Makros zusammengebastelt, die die Eingabe in einer Tabelle überwachen. Folgende Funktionalitäten sind eingebaut.

  • Daten könne nur jeweils in der nächsten freien Zeile eingefügt werden
  • Werte können nur eingegeben werden wenn Datum in Spalte A eingetragen ist
  • Eingabe in Spalte A wird auf datum überprüft
  • Neuer Datums-Eintrag muß >= letzter Eintrag sein
  • Änderungen an vorhandenen Datumsangaben müssen >= und Private MsgTitel
    Private Zeile1 '1. Zeile mit Daten
    Private SpalteMax 'letzte Spalte mit Daten

Private Sub Worksheet_Change(ByVal Target As Excel.Range)
Dim Vorgabe As Date, MsgText As String
Zeile1 = 3 '1. Zeile mit Daten
MsgTitel = „Kassenbuch“
'Überprüfung bei Änderung von schon eingegebenem Datum in Spalte A
If Target.Row >= Zeile1 And Target.Column = 1 Then
Target.Select
If Target.Row = Zeile1 And Target.Value = Cells(Target.Row - 1, 1) Then Exit Sub
If Target.Value Cells(Target.Row + 1, 1) Then
MsgText = „Datum muß größer oder gleich dem Datum " & _
Format(Cells(Target.Row - 1, 1)) & " der vorherigen Buchung sein!!“ & Chr$(10)
MsgText = MsgText & „und kleiner oder gleich dem Datum " & _
Format(Cells(Target.Row + 1, 1)) & " der nächsten Buchung sein!!“
If Target.Row = Zeile1 Then
Vorgabe = Date
Else
Vorgabe = Cells(Target.Row - 1, 1).Value
End If
Call Datumseingabe(Vorgabe, MsgText, Target.Row, 1)
End If
End If
End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range)
Dim Vorgabe As Date, MsgText As String
Zeile1 = 3 '1. Zeile mit Daten
SpalteMax = 5 'letzte Spalte mit Daten
MsgTitel = „Kassenbuch“
'Überprüfung bei Eingabe eines neuen Datums in Spalte A
If Target.Row >= Zeile1 And Target.Column = 1 Then
If IsEmpty(Cells(Target.Row - 1, 1)) Then
MsgBox „Daten müssen unmittelbar unterhalb der letzten ausgefüllten Zeile eingegeben werden“
Exit Sub
End If
MsgText = „Datum der Buchung?“
If IsEmpty(Cells(Target.Row, 1)) Then
If Target.Row = Zeile1 Then
Vorgabe = Date
Else
Vorgabe = Cells(Target.Row - 1, 1)
End If
Call Datumseingabe(Vorgabe, MsgText, Target.Row, 1)
Exit Sub
End If
End If
'Überprüfung auf Dateneingabe ohne Datum in den Spalten B bis F
If Target.Row >= Zeile1 And Target.Column >= 2 And Target.Column CDate(Eingabe) Then
Meldung = Meldung & Chr$(10) & „Datum muß neuer oder gleich dem Datum der letzten Buchung sein!“
GoTo Wiederholung1
End If
DatumEintragen:
Cells(Zeile, Spalte).Value = CDate(Eingabe)
Cells(Zeile, Spalte + 1).Select
End SubGruß
Franz

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hallo Franz!

Danke für deine Mühe!

Ich habe jetzt einen anderen Weg gefunden. Und zwar habe ich eine Gültigkeitsprüfung eingebaut. Hier ist die Formel dazu: UND(NICHT(ISTLEER(B59));B59>=B58))
Gruß Alex