• Privacywetgeving
    Het is bij Helpmij.nl niet toegestaan om persoonsgegevens in een voorbeeld te plaatsen. Alle voorbeelden die persoonsgegevens bevatten zullen zonder opgaaf van reden verwijderd worden. In de vraag zal specifiek vermeld moeten worden dat het om fictieve namen gaat.

wachttijd in loop van timer

Status
Niet open voor verdere reacties.

bandito bob

Terugkerende gebruiker
Lid geworden
26 jun 2007
Berichten
2.167
Hallo allemaal,

Ik heb de volgende uitdaging waar ik niet uitkom.

Ik heb een timer in VBA (met dank aan Wim Gielis), die werkt met een loop.
Nu is het zo dat de loop 100% van mijn CPU vraagt. Daarom wil ik een "wachttijd oid" in de loop zetten, zodat hij de loop niet aldoor door rent.

Ik heb al gekeken via zoeken, maar de oplossingen die daar staan werken wel, maar belasten de CPU ook op 100, zoals b.v. deze:
Code:
Application.Wait(Now + TimeValue("0:00:10"))

Mijn VBA stukje is deze:

Code:
Private Sub CommandButton1_Click()
    Dim tijd As String
    'registreer start tijd
    startTijd = DateTime.Now
    aankomsten = 6
    
    Cells(1, 3) = startTijd
    
    timing = Timer
    running = True
    Do While running
        tijd = ""
        tijd = tijd & Format(Int((Timer - timing) / 3600), "00") & ":"
        tijd = tijd & Format(Int(((Timer - timing) - Int((Timer - timing) / 3600) * 3600) / 60), "00") & ":"
        tijd = tijd & Format((Timer - timing) - 3600 * Int((Timer - timing) / 3600) - _
                60 * Int(((Timer - timing) - Int((Timer - timing) / 3600) * 3600) / 60), "00.0")
        
        Range("J2") = tijd
        If Range("J1") = 0 Then running = False
        DoEvents
    Loop
    End Sub

Kan dit opgelost worden? p.s. ik ben net een beginneling met VBA.
 
Zolang er een macro loopt zal de CPU belast worden.

Ook met Wait blijft de macro nog altijd lopen, ook al doet die eventjes niets.
 
Zo, bedankt voor het snelle antwoord:thumb:

Misschien mag ik nog een bijhorende vraag stellen:
Als de timer loopt en je wijzigd iets in een cel blijft de timer wel doorlopen, maar niet meer zichtbaar. Is dit op te lossen?

Groeten Bob.
 
Waneer je in een cel zit stopt VBA tot je klaar met invoeren bent. Zover ik weet kun je daar niets aan doen.
Wat je timer betreft dacht ik nog aan het ontime statement. Daarmee wordt er alleen code uitgevoerd wanneer er aan een bepaalde voorwaarde wordt voldaan, bv iedere seconde.Tussen door kan er dan weer gewewerkt worden.
Ik daar in het verleden iets over gevonden, maar kan het zo snel niet terug halen. Misschien dat iemand daar hulp bij kan bieden?
 
Leofact, bedankt voor de reactie.

Ik zal verder zoeken om te kijken of ik iets met ontime kan doen.

Groeten Bob.
 
Ik wil toch nog even melden (misschien handig voor overige gebruikers) dat ik iets heb gevonden. Hier http://www.helpmij.nl/forum/showthread.php?t=221044&highlight=wachten heb ik een goede/werkende oplossing gevonden.:)
Het gaat om dit stukje:

Voeg bovenaan je programma de volgende regel toe:
Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)

En daar waar jij een moment wilt wachten de volgende regel:
Sleep(1000) 'voor 1 seconde
Sleep(2000) 'voor 2 seconden (etc)

Hierdoor "slaapt" de macro een ingegeven tijd (bij mij 100msec.)
De CPU staat nu niet meer al de tijd op 100%.

Handig hoor zo'n forum.:thumb:
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan