Oppure

Loading
16/02/09 19:35
kingmaster
Postato originariamente da GrG:

Forse il tuo problema si potrebbe risolvere con la funzione format()...cmq sia ho fatto questa funzione un pò "ortodossa" dove i numeri li tratto come stringhe...
Private Function Ore(ByVal nOre As String) As String
If InStr(1, nOre, ",") > 0 Then
Dim num() As String
num = Split(nOre, ",")
If num(1) >= 60 Then
num(0) = num(0) + 1
num(1) = num(1) - 60
Ore = num(0) & "," & num(1)
Else
Ore = nOre
End If
End If
End Function


Sappi che mi sn risparmiato un ciclo...quindi è incompleta, nel senso che se tu gli passi un valore come "18,67" ti restituisce "19,7" però se gli dai un valore del tipo "18,671" sballa la conversione...


potresti indicarmi bn i dati di input quelle di output e le varie condizioni cmq sono forse riuscito a capire ke immagine intendevi
aaa
16/02/09 20:39
GrG
Si intendevo quella...
la funzione ti approssima un numero ad esempio "8.62" a "9.2" infatti 8 ore e 62 minuti = 9 ore e 2 minuti....quindi per integrarla nel tuo cidice scriverai:
...
e = Ore((d - c) + (b - a))
...
y = Ore(e - 8)
...


Però ti ripeto che non penso sia la soluzione migliore...
aaa
17/02/09 8:19
theprogrammer
Devi usare opportunamente la funzione DateDiff.

E gli orari DEVONO essere espressi nel formato

hh:mm

Quindi, nel tuo esempio, devi scrivere nei textbox

07:00 12:30
13:00 18:31

Il codice sara' quindi


Dim mMin As Long
Dim pMin As Long
Dim totMin As Long
Dim plusMin As Long
    
mMin = DateDiff("n", txtm.Text, txtm1.Text)
pMin = DateDiff("n", txtp.Text, txtp1.Text)
totMin = mMin + pMin
plusMin = totMin - 480
    
lblr.Caption = plusMin \ 60 & Format(plusMin Mod 60, "\:00")
lblr1.Caption = totMin \ 60 & Format(totMin Mod 60, "\:00")

aaa
17/02/09 11:09
P4p3r0g4
concordo sulla datediff (non ricordavo la funzione sebbene ne ricordavo l' esistenza)
comunque bastava trasformare le ore in minuti(o comunque l'udm minore), fare le dovute sottrazioni addizioni e poi riconvertire tutto con divisioni e mod.
aaa
17/02/09 14:33
GrG
Dovrò memorizzarla meglio l'istruzione dateiff almeno nn me la dimentico + :P
aaa
17/02/09 16:51
Louis
Ciao kingmaster,
a questo indirizzo trovi del codice che sostanzialmente risolve i tuoi problemi:
forum.masterdrive.it/articoli-visual-basic-6-35/calcoli-ore-minuti-26600/
aaa