Forfatter |
Emne Søg Emne funktioner
|
lysral
Bronze bruger
Medlem: 11.Okt.2010
Land: Danmark
Status: Offline
Point: 68
|
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.
|
 |
|
|
 |
Allan
Forum Admin
Forum Admin
Medlem: 03.Feb.2010
Land: Danmark
Status: Offline
Point: 10330
|
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
|
 |
lysral
Bronze bruger
Medlem: 11.Okt.2010
Land: Danmark
Status: Offline
Point: 68
|
Sendt: 16.Maj.2012 kl. 07:14 |
Fantastisk
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
|
 |
lysral
Bronze bruger
Medlem: 11.Okt.2010
Land: Danmark
Status: Offline
Point: 68
|
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
|
 |
lysral
Bronze bruger
Medlem: 11.Okt.2010
Land: Danmark
Status: Offline
Point: 68
|
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å - :)
|
 |
Allan
Forum Admin
Forum Admin
Medlem: 03.Feb.2010
Land: Danmark
Status: Offline
Point: 10330
|
Sendt: 16.Maj.2012 kl. 12:27 |
Hej Lars, Godt det virkede  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
|
 |
lysral
Bronze bruger
Medlem: 11.Okt.2010
Land: Danmark
Status: Offline
Point: 68
|
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
|
 |
lysral
Bronze bruger
Medlem: 11.Okt.2010
Land: Danmark
Status: Offline
Point: 68
|
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å
Tusind tak for hjælpen - og tak for en super side som jeg bruger meget når det går i hårknude.
/Lars
|
 |
Allan
Forum Admin
Forum Admin
Medlem: 03.Feb.2010
Land: Danmark
Status: Offline
Point: 10330
|
Sendt: 17.Maj.2012 kl. 10:52 |
Velbekomme Lars, tak for din tilbagemelding  //Allan
|
 |
HAYI
Forum Begynder
Medlem: 14.Nov.2012
Land: Danmark
Status: Offline
Point: 2
|
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.
|
 |
filipen
Bronze bruger
Medlem: 12.Nov.2012
Land: DK
Status: Offline
Point: 98
|
Sendt: 20.Nov.2012 kl. 12:20 |
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
|
 |
filipen
Bronze bruger
Medlem: 12.Nov.2012
Land: DK
Status: Offline
Point: 98
|
Sendt: 29.Nov.2012 kl. 13:30 |
Hvorfor vil den ikke gemme koden?
Når jeg åbner dokumentet igen er koden slettet, hvorfor
|
 |
filipen
Bronze bruger
Medlem: 12.Nov.2012
Land: DK
Status: Offline
Point: 98
|
Sendt: 05.Dec.2012 kl. 16:26 |
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.
|
 |
Allan
Forum Admin
Forum Admin
Medlem: 03.Feb.2010
Land: Danmark
Status: Offline
Point: 10330
|
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
|
 |
filipen
Bronze bruger
Medlem: 12.Nov.2012
Land: DK
Status: Offline
Point: 98
|
Sendt: 07.Dec.2012 kl. 08:42 |
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?
|
 |
Allan
Forum Admin
Forum Admin
Medlem: 03.Feb.2010
Land: Danmark
Status: Offline
Point: 10330
|
Sendt: 07.Dec.2012 kl. 10:35 |
Prøv at loade arket op her til forummet, så kigger jeg på det. //Allan
|
 |
filipen
Bronze bruger
Medlem: 12.Nov.2012
Land: DK
Status: Offline
Point: 98
|
Sendt: 07.Dec.2012 kl. 12:06 |
|
 |
Allan
Forum Admin
Forum Admin
Medlem: 03.Feb.2010
Land: Danmark
Status: Offline
Point: 10330
|
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
|
 |
filipen
Bronze bruger
Medlem: 12.Nov.2012
Land: DK
Status: Offline
Point: 98
|
Sendt: 10.Dec.2012 kl. 15:56 |
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.
|
 |