Hej Jag tycker det ser ut som ett datumformatsproblem. Datumet i din dator kan vara amerikanskt och datumet i koden svenskt eller tvärtom. Ja det är bara strul med olika DatumFormat. Du kan alltid använda tal istället för datum: Bra tips MizardX då gör man 1 min till en Constant slipper att kalla på CDate i onödan. Det blir inte fel. VB väljer bara att formatera konstantvärdet till amerikansk format. >Testa själv följande i debugfönstret: En konstant är bättre än att i runtime konvertera ett sträng värde.Får fel i timer funktion.
Detta gammla ex från Andreas, får jag inte att funka därför att mIntervall ändras.
Vad är fel ?
Option Explicit
Private mIntervall as Date
Private mTimeOut as Date
Private Sub Form_Load()
mIntervall = #0:10:00# 'Här blir det fel ändras till #12:10:00 AM#
mTimeOut = Now() + mIntervall
Timer1.Interval = 1000 'Lägre värde ger högre nogranhet
Timer1.Enabled = True
End Sub
Private Sub Fimer1_Timer()
If Now() >= mTimeOut Then
Debug.Print "10Min" 'Här placerar du din kod
mTimeOut = Now() + mIntervall
End If
End Sub
Hälsningar
TobbeSv: Får fel i timer funktion.
Försök att använda mer generella datumformat.
AndersSv: Får fel i timer funktion.
Jag fördrar att betrakta Tid Datum som ren algebra + -
Så här gör jag, det fungerar i hela välden.
Option Explicit
Dim mInterval As Single
Dim mTimeOut As Double
Private Sub Form_Load()
mInterval = CDate("00:10:00")
mTimeOut = CDate(Now + mInterval)
'Lägre värde ger högre nogranhet
Timer1.Interval = 1000
Timer1.Enabled = True
End Sub
Private Sub Timer1_Timer()
If Now() >= mTimeOut Then
'Här placerar du din kod
Form1.Print "Nu har det gått 10 min"
mTimeOut = CDate(Now + mInterval)
End If
End SubSv: Får fel i timer funktion.
<code>
Option Explicit
Dim mInterval As Single
Dim mTimeOut As Double
Private Sub Form_Load()
mInterval = 10 / 1440 'Tider sparas som bråkdelar av en hel dag (1 min = 1/1440 dag)
mTimeOut = Now + mInterval
Timer1.Interval = 1000 'ms
Timer1.Enabled = True
End Sub
Private Sub Timer1_Timer()
If Now() >= mTimeOut Then
'Här placerar du din kod
Form1.Print "Nu har det gått 10 min"
mTimeOut = mTimeOut + mInterval 'Kompenserar för eventuellt lagg
End If
End Sub
</code>Sv: Får fel i timer funktion.
Const ONEMINUTE = 1/1440 'sen är det bara att multiplicera med denna Constant
Hur tusan blir det vid midnatts övergång ? orkar inte analysera just nu.Sv: Får fel i timer funktion.
Testa själv följande i debugfönstret:
<code>
?#12:10:00 AM# = CDate("00:10")
</code>Sv: Får fel i timer funktion.
?#12:10:00 AM# = CDate("00:10")
Finns ingen anledning att testa när det finns ett bra beprövat sätt,
kommer iallafall alltid att göra på det säkra sättet.Sv: Får fel i timer funktion.