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

Macro iedere seconde uitvoeren

Status
Niet open voor verdere reacties.

Schink1970

Gebruiker
Lid geworden
24 jan 2020
Berichten
5
Hallo,

Ik zit met een lastig probleemje waar ik niet uit kom met mijn beperkte VBA kennis.
Ik wil een macro iedere seconde uitvoeren totdat een vooraf ingestelde tijd is bereikt.

Voorbeeld, ik heb in Cel A1 het getal 30 (=sec) ingevuld en wil, na het starten van de macro in bijv. cel C1 de resultaat van een vergelijking.
Dit resultaat wil ik iedere seconde geupdate hebben voor een periode van waarde A1 (=30 sec.). Daarna mag de macro stoppen.

Ik heb al van alles geprobeerd wat ik maar op internet kon vinden, maar het was het allemaal niet.
Kan iemand mij hier uit de brand helpen?

Alvast bedankt,
Bas
 
En nu wil je dat wij (met aan zekerheid grenzende waarschijnlijkheid) dezelfde oplossingen voor je gaan zoeken, zodat je ze opnieuw kan afkeuren? Lijkt mij niet handig; laat op zijn minst zien wat je hebt geprobeerd.
 
Sorry, ben iets te algemeen geweest.
Ik heb dus het volgende dus geprobeerd:
----
Sub Start()
Dim a As Double
a = Range("B2") 'aantal seconden dat de macro moet draaien
For i = 1 To a
Application.OnTime Now + TimeValue("00:00:01"), "macro"
i = i + 1
Next i
End Sub
----
De macro is een rekensommetje in dit geval. Zeg dat het sommetje D1=D1+D2 is.
Wat er nu gebeurt is dat de macro na 1 seconde wordt uitgevoerd
De for i gaat dan dus ook ineens heel snel naar zijn eindwaarde met als gevolg dat ik het resultaat van het sommetje na 1 seconde ineens in de cel komt, terwijl ik die iedere seconde wil zien oplopen totdat hij de ingegeven aantal secondes heeft gedraaid
 
Deze heb ik met succes gebruikt

Code:
Sub Refresh() ' This Sub calculates the sheet and tells Excel to call it again after 1 second

If bTimerOn Then ' If bTimerOn is True, start refreshing automatically
Application.OnTime Now + TimeValue("00:00:01"), "Refresh" ' The intervall is set to 1 second but can be changed variably
End If

Range("K11:L16") = Range("H11:I16").Value

End Sub

deze heb ik ervoor staan
Code:
Sub ToggleTimer() ' This Sub will switch the automatic timer on if it was off before, and vice-versa
bTimerOn = Not bTimerOn

Refresh ' It calls the Refresh Sub
End Sub
 
Laatst bewerkt:
Bedankt voor de input.
Het is mij met bovenstaande niet helemaal gelukt, maar het heeft mij wel op weg geholpen.
Ik heb uiteindelijk de volgende code die voor mij werkt. Hierbij heb ik de timer onderaan gezet, want als ik deze boven in de macro zet blijft hij actief, ook bij het bereiken van de waarde. Nu stopt hij ook werkelijk.
--
Sub timer()
'
' timer Macro

If Range("B6") < Range("B3").Value Then
Range("B6").Value = Range("B6").Value + Range("B4").Value
Else
Exit Sub
End If
Application.OnTime Now + TimeValue("00:00:01"), "timer"
End Sub
---

bedankt voor jullie hulp
 
Status
Niet open voor verdere reacties.

Nieuwste berichten

Terug
Bovenaan Onderaan