Avatar billede cmp77 Nybegynder
12. maj 2013 - 08:29 Der er 7 kommentarer og
1 løsning

Brugerdefineret tidsformat

Hej Eksperter,

jeg har lavet nogle celler (brugerdefineret) hvor jeg indtaster tid i timer og minutter, som bliver vist som t:mm.

I dag skal jeg indtast 1 time og 45 min som "1:45", men det optimale ville være at min indtastning hed "1,45", men stadig blev vist som "1:45".
Desuden ville det være rart om jeg slippe for at indtaste minutter, hvis der er tale om hele timer.

Kan dette overhovedet lade sig gøre?
Avatar billede natkatten Mester
12. maj 2013 - 09:19 #1
Hmm, jeg er ikke sikker på, at man kan "lege" så meget med et brugerdefineret format, at begge dine ønsker opfyldes, men man skal normalt i Excel ikke sige aldrig!

Hvis dette brugerdefinerede format anvendes:

00\:00

Så slipper du for at indtaste kolon (eller for den sags skyld komma). Så kan du taste f.eks. 930 og det vil blive forstået som 09:30. Men hvis du taster 9, så vil det blive forstået som 00:09.

Der kan helt sikkert laves noget vha VBA, men det vil jeg ikke begive mig ud i.
Avatar billede finb Ekspert
12. maj 2013 - 09:44 #2
Excel kan opfatte "1,45" som 1,45 døgn.
Prøv at dividere med 24
og afprøv forskellige formater på det.
Avatar billede cmp77 Nybegynder
12. maj 2013 - 10:27 #3
natkatten> Dit forslag (00\:00) er for så vidt ok. Skal jeg taste 930 for kl 9:30 eller 1000 for kl 10:00 kan jeg sagtens leve med det. Men så er problemet at det tolkes af excel som rene tal og ikke timer og minutter. Dvs en time består af 100 minutter/enheder og ikke 60 som det burde :)

finb> ja, jeg havde lidt lurret det . Indtaster jeg f.eks. 3 (tre timer), så anser excel det som tre dage. Synes dog ikke jeg har noget held med at dividere med 24 :(
Avatar billede sdh Mester
12. maj 2013 - 12:19 #4
Jeg Googlede mig frem til nedenstående vba kode på nettet som måske kan benyttes:

Private Sub Worksheet_Change(ByVal Target As Excel.Range)
Dim TimeStr As String

' Chip Pearson
'http://www.cpearson.com/excel/DateTimeEntry.htm
On Error GoTo EndMacro
If Application.Intersect(Target, Range("A1:A20")) Is Nothing Then
    Exit Sub
End If
If Target.Cells.Count > 1 Then
    Exit Sub
End If
If Target.Value = "" Then
    Exit Sub
End If

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:
MsgBox "You did not enter a valid time"
Application.EnableEvents = True
End Sub

Koden skal indsættes i arkets programkode:

Marker arket nederst - højre klik - vælg vis program kode - kopier herefter vba koden ind - vend tilbage til Excel.
Koden i dette eksempel virker kun på område a1:a20, men det kan du bare ændrer til det område du ønsker makroen skal virke på.
Husk at formater arket med t:mm.
Avatar billede sdh Mester
12. maj 2013 - 12:22 #5
Glemte lige at tilføje at din indtastning skal være uden kommaer -
dvs. indtastet værdi 145 bliver til 01:45.
Avatar billede Slettet bruger
13. maj 2013 - 06:45 #6
Hvis (og kun hvis) det er en éngangsoperation kan du gå ind i Excel indstillinger, Korrektur, Indstillinger for Autokorrektur. I feltet Erstat skriver du : og i feltet Med skriver du ,
Sæt flueben ved Udskift teksten under skrivning. OK.

Husk at slette denne ordre i Autokorrektur igen når du er færdig med indtastning.

Hans
Avatar billede Slettet bruger
13. maj 2013 - 06:48 #7
Rettelse:

Det skal selvfølgelig være , i feltet Erstat og : i feltet Med
(og ikke omvendt som jeg skrev i #6).
Avatar billede cmp77 Nybegynder
14. maj 2013 - 16:54 #8
sdh> Med lidt tilpasning virker scriptet fint... Dine google-færdigheder må være bedre end mine ;)

Takker til jer alle for input!
Avatar billede Ny bruger Nybegynder

Din løsning...

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.

Loading billede Opret Preview
Kategori
Vi har et stort udvalg af Excel kurser. Find lige det kursus der passer dig lige her.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester