Hallo Hajo- Datum und Zeitberechnung
24.12.2005 12:56:23
Peter
ist mir klar.
Leider erfolgt die Datums/Uhrzeiteingabe mit den sonderbarsten Zeichen.
Um dies abzufangen, habe ich eine vereinfachte
Eingabe hinzugefügt.
In meiner Anfrage stimmen die Spaltenbezeichnungen
nicht mit dem Bsp. überein.Mir ist auch bewußt, dass die Zeitspanne mit
"DateDiff" berechnet wird aber wie in einem Ereignis?
Siehe Bsp.
Peter
Private Sub OK_Worksheet_Change(ByVal Target As Excel.Range)
Dim Zielbereich As Range
If Target.Count > 1 Then Exit Sub
'Überprüfen, ob die richtige Zelle für Datum geändert wird
Set Zielbereich = Application.Intersect(Range("E:E,H:H"), Target)
If Not (Zielbereich Is Nothing) Then
AusZahlDatum Target
End If
'Überprüfen, ob die richtige Zelle für Zeit geändert wird
Set Zielbereich = Application.Intersect(Range("F:F,I:I"), Target)
If Not (Zielbereich Is Nothing) Then
AusZahlZeit Target
End If
End Sub
Public Sub AusZahlZeit(ByVal Target As Excel.Range)
Dim a
On Error GoTo fehlerbehandlung
a = Target.Value2
If a = "" Then Exit Sub
If Not (IsNumeric(a) Or IsDate(a)) Then Exit Sub
a = String(4 - Len(a), Asc("0")) & a
a = TimeSerial(Left$(a, Len(a) - 2), Right$(a, 2), 0)
Application.EnableEvents = False
Target.Value = a
Target.NumberFormat = "hh:mm"
fehlerbehandlung:
Application.EnableEvents = True
End Sub
Public Sub AusZahlDatum(ByVal Target As Excel.Range)
Dim a, t As Integer, m As Integer, j As Integer
On Error GoTo fehlerbehandlung
a = Target.Value2
If (IsNumeric(a) = False) And (IsDate(a) = False) Then Exit Sub
If (Mid$(a, 5, 4) 999999) Then Exit Sub
a = Format(CStr(a), "000000")
t = Mid$(a, 1, 2)
m = Mid$(a, 3, 2)
j = Mid$(a, 5, 4)
a = DateSerial(j, m, t)
Application.EnableEvents = False
Target.Value = a
Target.NumberFormat = "dd.mm.yy"
fehlerbehandlung:
Application.EnableEvents = True
End Sub