01. december 2008 - 10:27Der er
4 kommentarer og 1 løsning
Validering af klokkeslet
Hej,
Jeg sidder med en excelmakro som skal validere en indtastning og lave den om til et klokkeslet - uden at ændre formateringen på feltet...
Jeg har lavet følgende kode, og det virker fint, men mindre man rent faktisk skriver klokkeslættet med kolon (altså korrekt).
Det virker som om at ':' (kolon-tegnet) ikke registreres.
If ((Target.Column = 11) Or (Target.Column = 16)) Then If Not IsEmpty(Target) Or Target <> "" Then d = Target.Value
If Len(d) = 4 Then Target.Value = "'" & Left(d, 2) & ":" & Right(d, 2)
ElseIf Len(d) = 5 Then If ((Mid(d, 3, 1) = ".")) Then Target.Value = "'" & Left(d, 2) & ":" & Right(d, 2) Else Target.Value = "'" & Left(d, 2) & ":" & Right(d, 2) End If ElseIf Len(d) > 5 Then Target.Value = "'" Else Target.Value = "'" & Target.Value End If End If End If
Problemet ligger i, at når du indtaster 12:34 opfattes det som et klokkeslæt og omregenes til decimaltallet 0,523611111111111 - og så er længden meget større end 5. Så din sidste betingelse træder i kraft.
If ((Target.Column = 11) Or (Target.Column = 16)) Then If Not IsEmpty(Target) Or Target <> "" Then d = Target.Value If Target.Value < 1 Then Target.Value = "'" & CStr(Format(Target.Value, "hh:mm")) Exit Sub End If
If Len(d) = 4 Then Target.Value = "'" & Left(d, 2) & ":" & Right(d, 2)
ElseIf Len(d) = 5 Then If ((Mid(d, 3, 1) = ".")) Then Target.Value = "'" & Left(d, 2) & ":" & Right(d, 2) Else Target.Value = "'" & Left(d, 2) & ":" & Right(d, 2) End If ElseIf Len(d) >= 5 Then Target.Value = "'" Else Target.Value = "'" & Target.Value End If End If
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.