AW: Pflichfeld erstellen? - "weiche" Lösung
15.01.2007 15:39:34
Luc:-?
Hallo Kristijan,
mit einer VBA-Ereignisprozedur kann man nach jeder Eingabe den Cursor auf ein "Pflichtfeld" zwingen. Dabei wäre zwischen einer "weichen" und einer "harten" Lösung zu unterscheiden.
Erstere reagiert nur auf Eingaben, letztere auch auf Zellauswahl, d.h., es kann auch keine Zelle ausgewählt wdn, solange ein Datum fehlt. Da ich nicht weiß, ob das deinen Intentionen entspricht, habe ich mich für die "weiche" Lösung entschieden:
Option Explicit
Rem 1.leere Zelle in Datumsspalte als "Pflichtzelle"
' Autor: LSr\CyWorX - 1Publ: www.herber.de 20070115 = CDate
Private Sub Worksheet_Change(ByVal Target As Range)
Static datZ As Range
Dim i As Long
Const DatumSp As Integer = 1
On Error GoTo ex
Application.EnableEvents = False
If Target.Column = DatumSp Then
Set datZ = Target.Offset(1, 0)
GoSub ds
ElseIf IsEmpty(Cells(Target.Row, DatumSp)) Then
If datZ Is Nothing Then
Set datZ = Cells(Target.Row, DatumSp)
ElseIf Not IsEmpty(datZ) Then
Set datZ = datZ.Offset(1, 0)
ElseIf datZ.Row > Target.Row Then
Set datZ = Cells(Target.Row, DatumSp)
End If
GoSub ds
ElseIf Not IsEmpty(datZ) Then
Set datZ = datZ.Offset(1, 0)
GoSub ds
End If
GoTo ex
ds: Rem UP nächstes Leerdatum suchen
i = 0
While Not IsEmpty(datZ.Offset(i, 0))
i = i + 1
Wend
Set datZ = datZ.Offset(i, 0).Select
Return
ex: Application.EnableEvents = True
End Sub
Diese Prozedur bitte im VBA-Editor in das (Klassen-)Modul der betroffenen Tabelle einfügen (VBAProject - Tabelle... - Doppelklick und dann ins sich öffnende Leerblatt rechts einkopieren).
Wenn die Plicht-=Datumsspalte nicht Spalte A ist, die Konstante DatumSp entsprechend ändern (lfdNr der betreffd Spalte).
Gruß Luc :-?