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]