Avatar billede prefalch Praktikant
15. oktober 2015 - 07:42 Der er 10 kommentarer og
1 løsning

Beregning af tid, igen

Jeg fik i et tidligere spørgsmål svar på hvordan jeg fik indsat : automatisk når jeg indtastede tid, ##\:##

Men hvordan kombinerer man det, med at feltet skal formateres så man kan beregne på tiden.

Formateret som klokkeslet kombineret med formatering ##\:##

På forhånd tak
15. oktober 2015 - 08:46 #1
Den viste formatering har kun en kosmetisk betydning for, hvordan data præsenteres i cellen. Cellens indhold er stadig lig med det indtastede.

Det du søger er en ændring af indholdet, så det optræder som timer og minutter i beregninger også.

Dette ser jeg 2 løsninger på:

1. Bibehold indtastningscellen, og lav en formel i en anden celle, der med udgangspunkt i det indtastede konverterer til timer/minutter.
=(HELTAL(A1/100) & ":" & REST(A1;100))*1

2. En VBA-kode der tjekker for indtastning i cellen, og konvertering til klokkeslæt.

Hvad foretrækker du?
Avatar billede prefalch Praktikant
15. oktober 2015 - 09:20 #2
Det ved jeg ikke. Der spørger du til noget der går langt uden for mid viden, jeg er temmelig newbee når det gælder excel ud over de ganske basale beregninger.

Hvis jeg indsætter die forslag 1. i en celle A3 og så indtaster 613 i celle A1 kommer den med et resultat 0,259028, og det jeg gerne ville var at den i den celle jeg indtaster 613 i automatisk laver det om til 6:13. Cellen skal være formateret så der kan beregnes på den.

Så det det er måske en løsning som du foreslår i 2.
15. oktober 2015 - 09:22 #3
Resultatet er korrekt, du mangler bare at formatere cellen til klokkeslæt.
Avatar billede prefalch Praktikant
15. oktober 2015 - 09:29 #4
Takker.

Er VBA koden en "smukkere løsning". Her tænker jeg på om den konvertering sker i den celle som man indtaster i og ikke som i 1. hvor konverteringen sker i en anden celle
15. oktober 2015 - 09:49 #5
VBA-løsningen er mere "elegant", da den konverterer i indtastningscellen.

Skal projektmappen anvendes af andre på andre maskiner, skal du være opmærksom på, at VBA-sikkerheden kan indstilles, så koden ikke kan afvikles.
Avatar billede prefalch Praktikant
15. oktober 2015 - 09:55 #6
Den skal kun bruges på en maskine
15. oktober 2015 - 10:51 #7
Prøv med denne kode:

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim strTime As String
    With Target
        If .Cells.Count = 1 Then
            If IsNumeric(.Value) Then
                On Error GoTo ErrorOut
                Application.EnableEvents = False
                strTime = Format(Val(.Value), "0000")
                strTime = Left(strTime, Len(strTime) - 2) & ":" & Right(strTime, 2)
                If IsDate(strTime) Then
                    .Value = TimeValue(strTime)
                End If
            End If
        End If
    End With
ErrorOut:
    Application.EnableEvents = True
End Sub
Avatar billede prefalch Praktikant
15. oktober 2015 - 21:44 #8
Ja det er elegant og det virker

Lav et svar så får du poient
16. oktober 2015 - 08:49 #9
OK!
Avatar billede prefalch Praktikant
17. oktober 2015 - 13:06 #10
Jeg kommer lige tilbage, for da jeg åbnede mit ark igen virkede det ikke mere. Har nok ikke fået det gemt rigtigt
Avatar billede prefalch Praktikant
18. oktober 2015 - 14:58 #11
Det der rent faktisk sker er når jeg trykker f5 så kommer der en makroboks op der spørger om et navn. Hvis jeg så giver den et navn og taster f5 igen for at køre den så kommer makroboksen op igen.

Hvad skal jeg gøre for at få din kode til at virke igen
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

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