Dansk Regneark Forum
  Hjælp Hjælp  Søg i forum   Arrangementer   Opret ny bruger Opret ny bruger  Log ind Log ind


Emne lukketIndtastning af tid

 Besvar Besvar
Forfatter
lysral Se dropdown
Bronze bruger
Bronze bruger
Avatar

Medlem: 11.Okt.2010
Land: Danmark
Status: Offline
Point: 68
Direkte link til dette indlæg Emne: Indtastning af tid
    Sendt: 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.
Til top



Til top
Allan Se dropdown
Forum Admin
Forum Admin
Avatar
Forum Admin

Medlem: 03.Feb.2010
Land: Danmark
Status: Offline
Point: 10330
Direkte link til dette indlæg Sendt: 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
Til top
lysral Se dropdown
Bronze bruger
Bronze bruger
Avatar

Medlem: 11.Okt.2010
Land: Danmark
Status: Offline
Point: 68
Direkte link til dette indlæg Sendt: 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
Til top
lysral Se dropdown
Bronze bruger
Bronze bruger
Avatar

Medlem: 11.Okt.2010
Land: Danmark
Status: Offline
Point: 68
Direkte link til dette indlæg Sendt: 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
Til top
lysral Se dropdown
Bronze bruger
Bronze bruger
Avatar

Medlem: 11.Okt.2010
Land: Danmark
Status: Offline
Point: 68
Direkte link til dette indlæg Sendt: 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
Til top
Allan Se dropdown
Forum Admin
Forum Admin
Avatar
Forum Admin

Medlem: 03.Feb.2010
Land: Danmark
Status: Offline
Point: 10330
Direkte link til dette indlæg Sendt: 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
Til top
lysral Se dropdown
Bronze bruger
Bronze bruger
Avatar

Medlem: 11.Okt.2010
Land: Danmark
Status: Offline
Point: 68
Direkte link til dette indlæg Sendt: 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
Til top
lysral Se dropdown
Bronze bruger
Bronze bruger
Avatar

Medlem: 11.Okt.2010
Land: Danmark
Status: Offline
Point: 68
Direkte link til dette indlæg Sendt: 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
Til top
Allan Se dropdown
Forum Admin
Forum Admin
Avatar
Forum Admin

Medlem: 03.Feb.2010
Land: Danmark
Status: Offline
Point: 10330
Direkte link til dette indlæg Sendt: 17.Maj.2012 kl. 10:52
Velbekomme Lars, tak for din tilbagemelding Wink
 
//Allan
Til top
HAYI Se dropdown
Forum Begynder
Forum Begynder
Avatar

Medlem: 14.Nov.2012
Land: Danmark
Status: Offline
Point: 2
Direkte link til dette indlæg Sendt: 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.
Til top
filipen Se dropdown
Bronze bruger
Bronze bruger
Avatar

Medlem: 12.Nov.2012
Land: DK
Status: Offline
Point: 98
Direkte link til dette indlæg Sendt: 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
Til top
filipen Se dropdown
Bronze bruger
Bronze bruger
Avatar

Medlem: 12.Nov.2012
Land: DK
Status: Offline
Point: 98
Direkte link til dette indlæg Sendt: 29.Nov.2012 kl. 13:30
Hvorfor vil den ikke gemme koden?

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

Til top
filipen Se dropdown
Bronze bruger
Bronze bruger
Avatar

Medlem: 12.Nov.2012
Land: DK
Status: Offline
Point: 98
Direkte link til dette indlæg Sendt: 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.
Til top
Allan Se dropdown
Forum Admin
Forum Admin
Avatar
Forum Admin

Medlem: 03.Feb.2010
Land: Danmark
Status: Offline
Point: 10330
Direkte link til dette indlæg Sendt: 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
Til top
filipen Se dropdown
Bronze bruger
Bronze bruger
Avatar

Medlem: 12.Nov.2012
Land: DK
Status: Offline
Point: 98
Direkte link til dette indlæg Sendt: 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?
Til top
Allan Se dropdown
Forum Admin
Forum Admin
Avatar
Forum Admin

Medlem: 03.Feb.2010
Land: Danmark
Status: Offline
Point: 10330
Direkte link til dette indlæg Sendt: 07.Dec.2012 kl. 10:35
Prøv at loade arket op her til forummet, så kigger jeg på det.
 
//Allan
Til top
filipen Se dropdown
Bronze bruger
Bronze bruger
Avatar

Medlem: 12.Nov.2012
Land: DK
Status: Offline
Point: 98
Direkte link til dette indlæg Sendt: 07.Dec.2012 kl. 12:06
Til top
Allan Se dropdown
Forum Admin
Forum Admin
Avatar
Forum Admin

Medlem: 03.Feb.2010
Land: Danmark
Status: Offline
Point: 10330
Direkte link til dette indlæg Sendt: 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.
 
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
Til top
filipen Se dropdown
Bronze bruger
Bronze bruger
Avatar

Medlem: 12.Nov.2012
Land: DK
Status: Offline
Point: 98
Direkte link til dette indlæg Sendt: 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.
 
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.

Til top
 Besvar Besvar

Skift forum Forum tilladelser Se dropdown

© 2010 - 2024 Dansk Regneark Forum - en del af Excel-regneark.dk