Hur gör man på bästa sätt för att sitt program ska vänta 15 minuter innan det fortsätter i en loop? Hej Såhär ser det ut nu på ett ungefär, jag har plockat bort det som utförs mellan do until och sleep. Hej Vad är det du väntar på? Vad är det du gör i loopen innan uppehållet och efter uppehållet?<br> Som det ser ut nu är det massa kod i loopen. Ska skriva om den så den blir bättre. Kan någon skriva en fullständig kod med SvenPons funktion, som tex markerar cell A1 en gång i minuten. Jag har själv försökt sätta in koden i mitt macro, men lyckas inte. Tacksam för hjälp av någon som är duktig på detta :) Det här är inte VBA för excel, så det är inte konstigt att du inte får den att fungera. ;)VB 6.0 - Sleep
Idag använder jag sleep 900000, men programmet hänger sig liksom i 15 minuter.
Borde väll finnas bättre sätt? Iof har jag sätt någonstans att sleep är bäst, men det funkar inget vidare.
//DalleSv: VB 6.0 - Sleep
Som Onkel... skriver du skall använda Timerkontrollen.
Sleep är ganska oanvändbart på tider över 1 sek.
Hela programmet sover verkligen du kan inte göra något under 15 minuter.
Se om jag fattat rätt. Programmat skall utföra något var 15 minut.
I så fall kan du betrakta Timern som en Loop dvs du lägger koden
som skall utföras där, eller gör ett anrop till en Sub eller Funktion
därifrån.Om jag fattat det rätt kan jag skriva ihop ett litet exempel
som gör anrop varje 15 minut.
mvh
SvenSv: VB 6.0 - Sleep
Den där Do until är inte ultimat heller, men min fantasi dog...suck...
<code>
Private Sub AutoLoger()
Do Until mnuExit.Visible = False
Sleep 900000
Loop
End Sub
</code>Sv: VB 6.0 - Sleep
Efter denna princip kan du göra det
Option Explicit
Dim minuteCounter As Long
Private Sub Form_Load()
Timer1.Interval = 60000 'ca 1 minut
' Det antal minuter som programmet skall vänta här 15
Timer1.Tag = "15"
Timer1.Enabled = True
End Sub
Private Sub Timer1_Timer()
minuteCounter = minuteCounter + 1
'I detta exempel 15 minuter
If minuteCounter Mod Int(Timer1.Tag) = 0 Then
If mnuExit.Visible = False Then
Timer1.Enabled = False
minuteCounter = 0
Exit Sub
End if
' Gör något annat här
End If
End Sub
mvh
SvenSv: VB 6.0 - Sleep
<br>
Alternativt till timer kan du använda en loop med Doevents för att hantera events och sleep för att inte sluka för mycket resurser:
<code>
Private Sub AutoLoger()
Dim TimeOut as Date
Do Until mnuExit.Visible = False
'Kood
TimeOut = Now() + #0:15:00#
Do Until Now() > TimeOut
DoEvents
Sleep 100
Loop
'Kood
Loop
End Sub
</code>
Timer är ett bättre alternativ.<br>
<br>
Om du skickar med koden för din loop kan vi hjälpa dig skriva en bra lösning.Sv: VB 6.0 - Sleep
Sv: VB 6.0 - Sleep
Sv: VB 6.0 - Sleep
Och i VBA kan man inte heller använda timer, åtminstone inte i Excel<=97.
Det man får använda är
Application.OnTime Now + Tid, ProcedurNamn