• 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.

Reset timer in Userform na actie inplaats van met een knop

Status
Niet open voor verdere reacties.

samabert

Gebruiker
Lid geworden
27 mrt 2010
Berichten
308
Hallo forumleden,

Met het volgen van een interessante topic over het terug op nul zetten van een timer, bij elke actie, heb ik volgende vraag:
http://www.helpmij.nl/forum/showthread.php/930019-Openstaande-UserForm-automatisch-sluiten

Code uit topic 930019

Code:
 Private Sub Timer_Start2()
  t = DateAdd("s", 1, Time)
    If Timer1Val <> 10 Then
      Timer1Val = Timer1Val + 1
       Application.OnTime t, "module1.Blijf_lopen"
    Else
     'StopTimer1
  End If
End Sub

Public Sub Blijf_lopen()

    Timer_Start

End Sub


Is het mogelijk om bovenstaande code ook in mijn timer in te bouwen of aan te passen, zodat ik de nu in gebruik zijnde reset knop niet meer hoef te gebruiken?

Volgende code wordt gebruikt om een Userform, na bepaalde inactieve tijd het volledige document te laten sluiten. Nu gebruik ik een knop om de timer terug op de volledige ingestelde tijd te resetten, dit werkt, maar de bij elke actie terug op nul zetten methode is veel mooier.


De timer code die ik nu gebruik in mijn werkboek.

Code:
 Private Sub Timer_Start()

    Dim t, E, M As Double, S As Double
    Call Macro_Initialize
    workfrm.Label3.Visible = True
    t = Timer
    Do
        E = CDbl(Time) * 24 * 60 * 60 - t    'elapsed time in secs
        M = Int((AllowedTime * 60 - E) / 60)
        S = Int(AllowedTime * 60 - M * 60 - E)

        With workfrm.Label11
            .Caption = Format(CStr(M), "00") & ":" & Format(CStr(S), "00")
            .ForeColor = RGB(53, 197, 70)
            If S < 40 Then .ForeColor = RGB(250, 0, 0)
          
        End With
        DoEvents
    Loop Until (Timer - t) / 60 >= AllowedTime

    Unload Me

    ThisWorkbook.Close SaveChanges:=False

End Sub


Private Sub Macro_Initialize()

    Dim M As Double, S As Double
    AllowedTime = "1"    'setting time in minutes
    M = Int(AllowedTime)
    S = (AllowedTime - Int(AllowedTime)) * 60
    With workfrm.Label11
        .Caption = Format(CStr(M), "00") & ":" & Format(CStr(S), "00")

    End With
End Sub

Graag jullie hulp want het lukt mij niet.
Alvast bedankt.

Mvg.
Marc
 

Bijlagen

Maak van AllowedTime een Public variabele.
Dus dit in een Module:
Public AllowedTime As String

Dan kan je in iedere actie dit doen:
AllowedTime = "0"

Omdat je dan AllowedTime als String declareert zal je daar ook rekening mee moeten houden in je Timer_Start routine.
Zelf zou ik dat anders doen.
 
Laatst bewerkt:
edmoor,

Bedankt voor jouw reactie.

De countdown timer die ik nu gebruik heb ik gevonden op de site van Ozgrid, juist het label heb ik zelf wat aangepast en het wijzigen van de kleur i.v.m. de resterende tijd op een bepaald moment.
Als technieker die enorm geïnteresseerd is in Excel en VBA probeer ik elke keer bij te leren maar dit gaat nog lang veel te ver voor mij.

Je zegt, zelf zou ik dit anders doen, is de opbouw van de timer code niet zoals het zou moeten?
Zou je mij verder willen helpen?

Alvast bedankt.

Mvg.
Marc
 
Wat ik bedoelde is dat ik voor die timeout waarde geen String maar een Integer zou gebruiken.
 
edmoor,

Je zegt dat de Timer_Start routine dan ook aangepast moet worden.
In iedere actie de allowed time op nul brengen.
Sorry, maar ik zie het niet hoe ik dat in mijn timer code moet invoeren.

Toch bedankt voor je antwoord.

Mvg.
Marc
 
Ik heb geprobeerd om via zoekwerk wegwijs te geraken uit de tips die je aangegeven hebt, echter zonder succes.

Zou je mij verder op weg willen helpen?
Het idee om de timer telkens op nul te zetten zoals in de andere topic is veel beter dan werken met een knop om de timer te herstarten. Of moet heel mijn timer dan herbouwd worden?

Alvast bedankt.
Marc
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan