Hej! Ungefär så här: Hej! En timer kan bara ta integervärden. Så jag tror maxvärdet ligger på Jag tror deta är enklaste lösningen:kör kod om x antal timmar/minuter/sekunder
Hur gör man för att köra en kod efter x antal timmar/minuter/sekunder?
//MickeSv: kör kod om x antal timmar/minuter/sekunder
Använd en timer med ett interval på en sekund så programmet inte "äter" CPU och lägg in följande kod:
Dim nCountDown As Double
Dim nHours As Integer
Dim nMinutes As Integer
Dim nSeconds As Integer
Dim nStartTime As Long
'Ställ in när nedräkningen börjar
nStartTime = Timer 'Hämtar starttiden i millisekunder
'Räkna sen om nedräkningstiden till millisekunder
nCountDown = (nHours * 3600 + nMinutes * 60 + nSeconds) * 10
Private Sub Timer1_Timer()
If nStartTime + nCountDown = Timer then
'Kör koden nu...
End If
End SubSv: kör kod om x antal timmar/minuter/sekunder
Jag kan inte få det till att fungera.
Klarar den av om nHour och nMinute är lika med noll?
Jag satte en msgbox efter uträkningen:
MsgBox nCountDown
Då fick jag upp 50, när jag hade satt nHour och nMinute på noll och nSeconds på 5.
Edit: Får overflow när jag provar att sätta ngt på nHour och nMinute.
//MickeSv: kör kod om x antal timmar/minuter/sekunder
några minuter.
Man kan dock göra en egen räknare som räknas upp en gång i minuten
mha timern. När denna räknare sedan når önskat värde är det bara att
köra.
/EmmaSv: kör kod om x antal timmar/minuter/sekunder
<code>
Option Explicit
Private mTimeOut As Date
Private Sub Form_Load()
mTimeOut = Now + TimeSerial(0, 0, 5)
Timer1.Interval = 200
Timer1.Enabled = True
End Sub
Private Sub Timer1_Timer()
If Now >= mTimeOut Then
Timer1.Enabled = False
MsgBox "5 sekunder har passerat!"
End If
End Sub
</code>
Du kan oxå använda DateAdd() eller Dateserial() funktionerna för att lägga till år måndad och dag.