Gå til innhold

Desimal til time og minutt konvertering ?


Anbefalte innlegg

Skrevet

Jeg får ut f.eks 12.1 timer av et mattestykke jeg har i et program. Jeg ønsker å konvertere dette til 12 timer og 6 minutter med en VB kode.

 

Ønsker også å plusse de 12.1 timene på nåtid klokken. Hvis klokken er 12:00 nå så skal utregnelsen vise 24:01

 

 

 

Noen som har en ide hvordan det kan gjøres på en enkel måte ? :-)

Videoannonse
Annonse
Skrevet

Det bak komma (dvs. 1) må ganges med seks. Hvordan du kan dele 12.1 opp i 12 og 1 vet du sikkert (bruk Splitfunksjonen, hvis din versjon av VB har dette).

 

Vet ikke om det finnes noen funksjon for å legge sammen tider, men jeg kan lage en hvis du vil. :)

Skrevet (endret)

Akkurat som opix sier, slik:

Dim Tall As String
Tall = 12.1

Dim SplittBuff
SplittBuff = Split(Tall, ",")

MsgBox SplittBuff(0) & " timer, og " & SplittBuff(1) * 6 & " minutter"

Edit: For å plusse kan du gjøre slik:

Dim Tall As String
Tall = 12.1

Dim SplitBuff
SplitBuff = Split(Tall, ",")

Dim SplitBuff2
SplitBuff2 = Split(Time, ":")

Dim Tid
Tid = Val(SplitBuff(0)) + Val(SplitBuff2(0)) & ":" & Val(SplitBuff(1) * 6) + Val(SplitBuff2(1))

MsgBox Tid

Endret av Jonas
Skrevet

Jonas: Fungerer bra en stund det der, men så får jeg opp feilmelding: "Out of range"

 

Virker som koden ikke takler å få "12" mens 12.1 går bra siden det er en desimal der..

 

Hvordan kan dette løses da ?

Skrevet (endret)

Da bruker vi en If og sjekker om det ikke er desimaler, og lager et array "manuelt". Slik:

Dim Tall As String
Tall = 12.1

Dim SplitBuff
SplitBuff = Split(Tall, ",")

If UBound(SplitBuff) = 0 Then SplitBuff = Array(SplitBuff(0), 0)

Dim SplitBuff2
SplitBuff2 = Split(Time, ":")

Dim Tid
Tid = Val(SplitBuff(0)) + Val(SplitBuff2(0)) & ":" & Val(SplitBuff(1) * 6) + Val(SplitBuff2(1))

MsgBox Tid

Edit: La til all koden.

Endret av Jonas
Skrevet

Se der ja, men når noe blir løst så dukker et nytt problem opp.. koden tar ikke hensyn til 24 timer klokke. Får regnet ut klokken 33:25 og det passer jo ikke helt :)

Skrevet

Jeg regnet med at du ville ha det sånn, siden det står 24:01 i første innlegg. Uansett, det kan man bare fikse med en Loop. Slik:

Dim Tall As String
Tall = 12.1

Dim SplitBuff
SplitBuff = Split(Tall, ",")

If UBound(SplitBuff) = 0 Then SplitBuff = Array(SplitBuff(0), 0)

Dim SplitBuff2
SplitBuff2 = Split(Time, ":")

Dim Tid, EkstraDager As Long, DagBuff As Long

DagBuff = Val(SplitBuff(0)) + Val(SplitBuff2(0))

Do Until DagBuff <= 24
   
   EkstraDager = EkstraDager + 1
   DagBuff = DagBuff - 24
   
Loop

Tid = DagBuff & ":" & Val(SplitBuff(1) * 6) + Val(SplitBuff2(1))

MsgBox Tid
MsgBox "Ekstra dager: " & EkstraDager

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...