Private Sub Worksheet_Change(ByVal Target As Excel.Range)'----------------------------------------------------------------------------------
'*' Tast klokkeslæt direkte i cellerne.
'*' Kopier koden og indsæt den direkte under det ark den skal bruges.
'*' I linje 3 nedenunder skal Sheets() og Range("") tilpasses.
'*' Der kan tilføjes flere Range efter behov.
'*' Brug komma som separator ved flere Range = Range("N9:P487, R9:S487, U9:V487").
'*' Formater cellerne, hvor klokkeslættene skal tastes, som Klokkeslætsformat.
'*' Se også det med grønt nederst i koden vedr. Password.
'----------------------------------------------------------------------------------
On Error GoTo EndMacro
If Intersect(Target, Sheets("Forside").Range("D17:E398, G7:H398")) Is Nothing Then Exit Sub
If Target.Cells.Count > 1 Then Exit Sub
If Target.Value = "" Then Exit Sub
Application.EnableEvents = False
With Target
If .HasFormula = False Then
Select Case Len(.Value)
Case 1 ' e.g., 1 = 00:01 AM
TimeStr = "00:0" & .Value
Case 2 ' e.g., 12 = 00:12 AM
TimeStr = "00:" & .Value
Case 3 ' e.g., 735 = 7:35 AM
TimeStr = Left(.Value, 1) & ":" & Right(.Value, 2)
Case 4 ' e.g., 1234 = 12:34
TimeStr = Left(.Value, 2) & ":" & Right(.Value, 2)
Case 5 ' e.g., 12345 = 1:23:45 NOT 12:03:45
TimeStr = Left(.Value, 1) & ":" & Mid(.Value, 2, 2) & ":" & Right(.Value, 2)
Case 6 ' e.g., 123456 = 12:34:56
TimeStr = Left(.Value, 2) & ":" & Mid(.Value, 3, 2) & ":" & Right(.Value, 2)
Case Else
Err.Raise 0
End Select
.Value = TimeValue(TimeStr)
End If
End With
Application.EnableEvents = True
Exit Sub
EndMacro:
On Error Resume Next
Range(Target.Address).Select: Selection = ""
'Dialog Message
QuestionToMessageBox = " Ugyldig indtastning !" _
& vbNewLine & vbNewLine & " Der er enten brugt separator." _
& vbNewLine & " Eller det er et ugyldigt klokkeslæt." _
& vbNewLine & vbNewLine & " Skriv et korrekt klokkeslæt, som et helt tal, uden separator." _
& vbNewLine & " - 1 = 00:01" _
& vbNewLine & " - 12 = 00:12" _
& vbNewLine & " - 123 = 01:23" _
& vbNewLine & " - 1234 = 12:34" _
& vbNewLine & vbNewLine & " Midnat, klokken 24:00, skrives altid som 0." _
& vbNewLine & " - 0 = 24:00"
'MsgBox Title
YesOrNoAnswerToMessageBox = MsgBox(QuestionToMessageBox, vbOKOnly + vbInformation, "")
'----------------------------------------------------------------------------------
'*' Hvis der bruges Password, skal Password skrives i koden nedenunder.
'*' Password indsættes 2 steder.
'*' 1) Hvor arket låses op.
'*' 2) Hvor arket låses igen.
'*' Eks hvis Password = Hej -> ActiveSheet.Unprotect Password:="Hej"
'*' Eks hvis Password = Hej -> ActiveSheet.Protect Password:="Hej"
'*' Hvis arket låses, men UDEN Password, skal der ikke ændres i koden.
'*' Koden skal heller ikke ændres, hvis der IKKE bruges Password.
'*' Her bruges bare tomme tegn.
'*' Eks -> ActiveSheet.Unprotect Password:=""
'*' Eks -> ActiveSheet.Protect Password:=""
'----------------------------------------------------------------------------------
UD:
Rem ActiveSheet.Unprotect Password:=Sheets("Indstillinger").Range("B9").Value
Rem ActiveCell.NumberFormat = "hh:mm"
Rem ActiveSheet.Protect Password:=Sheets("Indstillinger").Range("B9").Value
Application.EnableEvents = True
End Sub