Print side | Luk vindue

Indtastning af tid

Udskrevet fra: Dansk Regneark Forum
Kategori: Hjælp til regneark.
Forum navn: Generelt
Forum beskrivelse: Hjælp til generel daglig brug af programmet Excel
Web-adresse: https://forum.excel-regneark.dk/forum_posts.asp?TID=778
Udskrevet den: 06.Mar.2025 kl. 17:37


Emne: Indtastning af tid
Besked fra: lysral
Emne: Indtastning af tid
Posteringsdato: 15.Maj.2012 kl. 09:35
Hej
 
Jeg har brug for at indtaste mange tidspunkter i mit regneark og ville gerne kunne taste det uden brug af :
 
Hvordan gør jeg det?
 
Det jeg mener er at 600 bliver skrevet som 06:00 når jeg trykker enter og 1345 bliver 13:45.



Svar:
Besked fra: Allan
Posteringsdato: 15.Maj.2012 kl. 19:47
Hej lysral,
 
Jeg ved ikke om du er bekendt med VBA, da det er nødvendigt for at opnå den funktionalitet du ønsker.
 
Start med at formatere dit område til tidsformat [tt]:mm:ss
Højreklik på din arkfane og vælg 'Vis Programkode'
 
Bemærk at linjen: If Application.Intersect(Target, Range("A1:A100")) Is Nothing Then
skal ændres til det omåde du ønsker at funktionen skal regere i. (Her A1:A1000)
 
Når du fremover skriver 800 i en celle, vil koden ændre det til 08:00. 2359 for 23:59 osv osv.
 
Indsæt denne kode under arket:
 
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
Dim TimeStr As String
On Error GoTo Endmacro
If Application.Intersect(Target, Range("A1:A100")) Is Nothing Then
    Exit Sub
End If

If Target.Cells.Count > 1 Then
    Exit Sub
End If
Application.EnableEvents = False
With Target
If .HasFormula = False Then
    Select Case Len(.Value)
        Case 1
            TimeStr = "00:0" & .Value
        Case 2
            TimeStr = "00:" & .Value
        Case 3
            TimeStr = Left(.Value, 1) & ":" & _
            Right(.Value, 2)
        Case 4
            TimeStr = Left(.Value, 2) & ":" & _
            Right(.Value, 2)
        Case 5
            TimeStr = Left(.Value, 1) & ":" & _
            Mid(.Value, 2, 2) & ":" & Right(.Value, 2)
        Case 6
            TimeStr = Left(.Value, 2) & ":" & _
            Mid(.Value, 3, 2) & ":" & Right(.Value, 2)
        Case Else
            Err.Raise 0
    End Select
   .Value = TimeValue(TimeStr)
Target.Offset(0, 1).Activate
End If
End With
Application.EnableEvents = True
Exit Sub
Endmacro:
MsgBox "        Indtastningsfejl !!!" & Chr(13) & Chr(13) & "            Prøv igen !"
Application.EnableEvents = True
End Sub
 
//Allan


Besked fra: lysral
Posteringsdato: 16.Maj.2012 kl. 07:14
Fantastisk Wink
 
Jeg kan ikke programere i VBA men "kender" det godt.
 
Hvis jeg gerne vil fjerne den besked boks som popper op når man sletter en celle er det så bare at fjerne den ene linje i din kode?
 
mange tak for hjælpen so far
 
/Lars


Besked fra: lysral
Posteringsdato: 16.Maj.2012 kl. 07:20
og lige et ekstra spørgsmål til din kode
 
Hvis jeg har flere områder i arket som jeg gerne vil kunne bruge den formel i, hvordan skriver jeg så det?
 
ex. If Application.Intersect(Target, Range("A1:A10; F3:G9")) Is Nothing Then

Eller kopier jeg bare hele din kode ind de gange jeg har brug for det også laver et område for hver?

 
/Lars


Besked fra: lysral
Posteringsdato: 16.Maj.2012 kl. 07:24

Bare glem det spørgsmål - jeg har forsøgt mig og det virker hvis jeg adskiller områderne med ,

 
Jeg forsøger at fjerne boksen også - :)
 
Clap


Besked fra: Allan
Posteringsdato: 16.Maj.2012 kl. 12:27

Hej Lars,

 
Godt det virkede Wink
Du kan bare fjerne hele linjen: MsgBox " Indtastningsfejl !!!" & Chr(13) & Chr(13) & " Prøv igen !"
Så vises boksen ikke mere.
 
Koden er lidt følsom over for sletning af rækker/kolonner og kan også brokke sig hvis man kopierer og sætter ind i området.
Hvis du får brug for at ændre drastisk i området, kan du bruge 2 makroer til at slå funktionen hhv. til og fra
 
Sub SlåTil
Application.EnableEvents = True
End Sub
 
Sub SlåFra
Application.EnableEvents = False
End Sub
 
//Allan


Besked fra: lysral
Posteringsdato: 16.Maj.2012 kl. 13:50
Okay fint, den virker fint når jeg har fjernet boksen.
 
Lige et spørgsmål mere, hvis jeg vil tildele flere områder i arket den kode, hvordan adskiller jeg så cellerne i de forskellige ark?
 
If Application.Intersect(Target, Range("A1:A100")) Is Nothing Then
Den kode virker åbenbart på alle ark også selvom jeg har lagt den ind specifik i VBA ark1 så har funktionen også sin ret på ark2.
 
/Lars


Besked fra: lysral
Posteringsdato: 16.Maj.2012 kl. 13:52
Den besked glemmer du bare, det var mig som havde tastet ændringer i det forkerte ark i VBA - no wonder det ikke virkede så LOL
 
Tusind tak for hjælpen - og tak for en super side som jeg bruger meget når det går i hårknude.
 
/Lars


Besked fra: Allan
Posteringsdato: 17.Maj.2012 kl. 10:52
Velbekomme Lars, tak for din tilbagemelding Wink
 
//Allan


Besked fra: HAYI
Posteringsdato: 14.Nov.2012 kl. 15:18
Hej Allan,
 
Kan du hjælpe mig med denne formel?
 
Jeg skal nemlig have værdien formateret til klokkeslet ;
 
=HVIS(OG(1<$I$12;$I$12<7);"8";HVIS(OG(6<$I$12;$I$12<10);"7,5";HVIS(OG(9<$I$12;$I$12<14);"8";"")))
 
 
Ved bare ikke hvor jeg skal have registreret tt:mm som værdi.
 
Håber du kan hjælpe.


Besked fra: filipen
Posteringsdato: 20.Nov.2012 kl. 12:20
Citat: lysral lysral skrev:

og lige et ekstra spørgsmål til din kode
 
Hvis jeg har flere områder i arket som jeg gerne vil kunne bruge den formel i, hvordan skriver jeg så det?
 
ex. If Application.Intersect(Target, Range("A1:A10; F3:G9")) Is Nothing Then

Eller kopier jeg bare hele din kode ind de gange jeg har brug for det også laver et område for hver?

 
/Lars

Hvordan gjorde du så, jeg kan ikke finde løsningen på det.
Jeg kan kun finde ud hvordan jeg gjorde med en kolonne, men ikke med flere kolonner:
If Application.Intersect(Target, Range("B1:B1000; C1:C1000")) Is Nothing Then 
Virker ikke


Besked fra: filipen
Posteringsdato: 29.Nov.2012 kl. 13:30
Hvorfor vil den ikke gemme koden?

Når jeg åbner dokumentet igen er koden slettet, hvorfor



Besked fra: filipen
Posteringsdato: 05.Dec.2012 kl. 16:26
Citat: Allan Allan skrev:

Hej lysral,
 
Jeg ved ikke om du er bekendt med VBA, da det er nødvendigt for at opnå den funktionalitet du ønsker.
 
Start med at formatere dit område til tidsformat [tt]:mm:ss
Højreklik på din arkfane og vælg 'Vis Programkode'
 
Bemærk at linjen: If Application.Intersect(Target, Range("A1:A100")) Is Nothing Then
skal ændres til det omåde du ønsker at funktionen skal regere i. (Her A1:A1000)
 
Når du fremover skriver 800 i en celle, vil koden ændre det til 08:00. 2359 for 23:59 osv osv.
 
Indsæt denne kode under arket:
 
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
Dim TimeStr As String
On Error GoTo Endmacro
If Application.Intersect(Target, Range("A1:A100")) Is Nothing Then
    Exit Sub
End If

If Target.Cells.Count > 1 Then
    Exit Sub
End If
Application.EnableEvents = False
With Target
If .HasFormula = False Then
    Select Case Len(.Value)
        Case 1
            TimeStr = "00:0" & .Value
        Case 2
            TimeStr = "00:" & .Value
        Case 3
            TimeStr = Left(.Value, 1) & ":" & _
            Right(.Value, 2)
        Case 4
            TimeStr = Left(.Value, 2) & ":" & _
            Right(.Value, 2)
        Case 5
            TimeStr = Left(.Value, 1) & ":" & _
            Mid(.Value, 2, 2) & ":" & Right(.Value, 2)
        Case 6
            TimeStr = Left(.Value, 2) & ":" & _
            Mid(.Value, 3, 2) & ":" & Right(.Value, 2)
        Case Else
            Err.Raise 0
    End Select
   .Value = TimeValue(TimeStr)
Target.Offset(0, 1).Activate
End If
End With
Application.EnableEvents = True
Exit Sub
Endmacro:
MsgBox "        Indtastningsfejl !!!" & Chr(13) & Chr(13) & "            Prøv igen !"
Application.EnableEvents = True
End Sub
 
//Allan

Hej Allan.

Hvordan får jeg den til at gemme koden i arket?

Når jeg åbner filen igen, så husker den ikke koden.


Besked fra: Allan
Posteringsdato: 06.Dec.2012 kl. 13:56
Hej,
 
Hvilket filformat bruger du?
Husk på at .xlsx formatet ikke understøtter VBA, men du i stedet skal bruge .xlsm.
 
//Allan


Besked fra: filipen
Posteringsdato: 07.Dec.2012 kl. 08:42
Citat: Allan Allan skrev:

Hej,
 
Hvilket filformat bruger du?
Husk på at .xlsx formatet ikke understøtter VBA, men du i stedet skal bruge .xlsm.
 
//Allan

Fedt tak. 

Koden er nu gemt og bliver i arket. MEN.......... den fungerer ikke, jeg kan ikke taste tiden som normalt, efter den er gemt.


Hvad kan jeg gøre forkert?


Besked fra: Allan
Posteringsdato: 07.Dec.2012 kl. 10:35
Prøv at loade arket op her til forummet, så kigger jeg på det.
 
//Allan


Besked fra: filipen
Posteringsdato: 07.Dec.2012 kl. 12:06
uploads/697/Filips_timer_2012_ny.xlsm - uploads/697/Filips_timer_2012_ny.xlsm


Besked fra: Allan
Posteringsdato: 07.Dec.2012 kl. 13:51
Hej filipen,
 
Jeg har tilrettet din fil så den kører (testet i version 2007 og 2010)
Jeg har tilføjet at koden kun skal virke på celler uden farve, for at beskytte dine tekster som ligger i farvede celler.
Den er her: uploads/1/Kopi_af_Filips_timer_2012_ny.xlsm - uploads/1/Kopi_af_Filips_timer_2012_ny.xlsm
 
Men....
Jeg kan se at du bruger Excel 2008, som er en version skrevet til Mac.
Netop Excel 2008 understøtter ikke VBA (makroer), så jeg vil gætte på at det er derfor det ikke virker.
Træerne vokser desværre ikke ind i himlen.
 
//Allan


Besked fra: filipen
Posteringsdato: 10.Dec.2012 kl. 15:56
Citat: Allan Allan skrev:

Hej filipen,
 
Jeg har tilrettet din fil så den kører (testet i version 2007 og 2010)
Jeg har tilføjet at koden kun skal virke på celler uden farve, for at beskytte dine tekster som ligger i farvede celler.
Den er her: uploads/1/Kopi_af_Filips_timer_2012_ny.xlsm - uploads/1/Kopi_af_Filips_timer_2012_ny.xlsm
 
Men....
Jeg kan se at du bruger Excel 2008, som er en version skrevet til Mac.
Netop Excel 2008 understøtter ikke VBA (makroer), så jeg vil gætte på at det er derfor det ikke virker.
Træerne vokser desværre ikke ind i himlen.
 
//Allan

Tror at det er fordi jeg arbejder på 3 maskiner med samme fil.

Det virker PT ikke på arbejdet, men prøver når jeg kommer hjem.




Print side | Luk vindue