Time 2 Var

Hallo,
Ich würde gern die dauer eines Kopiervorgangs ermitteln:

Dim Timex As Long
Dim Timey As Long
Dim Time1 As Long

Timex = Time
Kopiervorgang …
Timey = Time
Time1 = Timey - Timex

und warum geht das nicht ?

P Danke mfg joe

Hallo, Joe!

und warum geht das nicht ?

Dim Timex As Long

=> Timex = Date(), weil Ganzzahl/Long, und Time liefert die Uhrzeit als Nachkommastelle.

Dim Timey As Long

=> Timey = Date(), weil Ganzzahl/Long, und Time liefert die Uhrzeit als Nachkommastelle.

Und weil Du hoffentlich nicht länger als einen Tag (oder um Mitternacht herum) kopierst, bekommst Du wahrscheinlich als Dauer 0.

Deklariere Deine Time-Variablen als Date (mit Dim Timex As Date), und es sollte laufen. Wenn Du Sekunden mit einigen Nachkommastellen haben willst, solltest Du die Timer-Funktion verwenden, die die Sekunden nach Mitternacht angibt (als Single). Ist halt ein bisschen genauer. Kommt auf das an, was Du messen willst…

Gruß, Manfred

Hallo,

Ich würde gern die dauer eines Kopiervorgangs ermitteln:

Dim Timex As Long
Dim Timey As Long
Dim Time1 As Long

Timex = Time
Kopiervorgang …
Timey = Time
Time1 = Timey - Timex

und warum geht das nicht ?

dafür würde ich auch den Timer nehmen, aber ich bringe trotzdem mal Deinen Code in Ordnung, damit Du den Fehler findest.

Dim Timex As Date
Dim Timey As Date
Dim Time1 As Long

Timex = Time
'Kopiervorgang ....
Timey = Time
Time1 = DateDiff("s", Timey, Timex)

So funktioniert es. (Das „s“ steht für Sekunden, Du kannst die Differenz auch in Minuten … Jahren haben.)

Gruß, Rainer

Danke & Danke.
da es kopiervorgänge gibt die Minuten dauern habe ich mich an folgender IF Schleife versucht,

aber…

timex = Time
 Scandir
 timey = Time
 time1 = DateDiff("s", timex, timey)
 If time1 
mfg joe

Hi Joe,

da es kopiervorgänge gibt die Minuten dauern habe ich mich an
folgender IF Schleife versucht,

aber…

 timex = Time
 Scandir
 timey = Time
 time1 = DateDiff("s", timex, timey)
 If time1 
Wieso hast Du hier einen String??? Du bekommst doch eine Zahl zurück.

60 ist natürlich nicht "60", das wird nie 'True'.



    
     Label76 = time1 & " Sek."



Fehler, Erklärung unten. Der Fehler tritt aber nicht auf, weil die Stelle im Programm nie erreicht wird.


    
     Else
     time1 = DateDiff("m", timex, timey)
     Label76 = time1 & " Min."



Das wird wohl eine Fehlermeldung geben, Du willst eine Zahl als String verarbeiten. Besser wird wohl das klappen:

**Label76 = Str(time1) & " Min."**
ähhmmmm, wieso eigentlich Label76??? Verwendest Du keine Steuerelementefelder? Dann gehen Dir aber bald die Resourcen aus. Du darfst nur rund 200 Steuerelemente auf die Form legen. Das Label sollte Label1(76) heißen. :smile:


    
     End If




Ich habe mal eine einfache Zeitmessung mit ein paar Variablen weniger, einfach nur beim Klicken von zwei Buttons, mehr liegt nicht auf der Form.



    
    Option Explicit
     Dim TimeX As Date
    
    Private Sub Command1\_Click()
     TimeX = Now
    End Sub
    
    Private Sub Command2\_Click()
     Me.Caption = DateDiff("s", TimeX, Now)
    End Sub




Gruß, Rainer