HERBERS Excel-Forum - die Dialoge

Thema: TextBox-Inhalt markieren

Home
Abbildung - Vor letzter Ziffer
Vor letzter Ziffer Abbildung - Nach letzter Ziffer
Nach letzter Ziffer
  • Prozedur: txtDatum_Change
  • Art: Ereignis
  • Modul: Klassenmodul der UserForm
  • Zweck: TextBox-Inhalt markieren
  • Ablaufbeschreibung:
    • Variablendeklaration
    • TextBox-Inhalt an String-Variable übergeben
    • Wenn die String-Variable leer ist, Prozedur verlassen
    • Wenn das rechte Zeichen der String-Variablen nicht numerisch ist...
    • Warnton
    • Die String-Variable um ein Zeichen kürzen
    • Verkürzte String-Variable in TextBox schreiben
    • Prüfung beenden
    • Wenn die Länge der Stirng-Variablen 4 ist...
    • Fehlerroutine starten
    • Datum aus dem aktuellen Jahr, den letzten und ersten beiden Zeichen der String-Variablen bilden
    • Wenn es sich nicht um einen gültigen Datumswert handelt, also ein Fehler aufgetreten ist...
    • MessageBox als Fehlermldung ausgeben
    • Error-Objekt zurücksetzen
    • Prozedur verlassen
    • Prüfung beenden
    • Erste freie Zelle in Spalte A ermitteln
    • Datumsvariable in Zelle eintragen
    • TextBox zurücksetzen
  • Code:

    
    Private Sub txtDatum_Change()
       Dim dat As Date
       Dim iRow As Integer
       Dim sTxt As String
       sTxt = txtDatum.Text
       If sTxt = "" Then Exit Sub
       If Right(sTxt, 1) Like "[0-9]" = False Then
          Beep
          sTxt = Left(sTxt, Len(sTxt) - 1)
          txtDatum.Text = sTxt
       End If
       If Len(sTxt) = 4 Then
          On Error Resume Next
          dat = DateSerial(Year(Date), Right(sTxt, 2), Left(sTxt, 2))
          If Err > 0 Then
             MsgBox "Falsches Datum!"
             Err = 0
             txtDatum.Text = ""
             Exit Sub
          End If
          iRow = WorksheetFunction.CountA(Columns(1)) + 1
          Cells(iRow, 1) = dat
          txtDatum.Text = ""
       End If
    End Sub