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

Hoe een lopende macro netjes onderbreken??

Status
Niet open voor verdere reacties.

HansFRAP

Gebruiker
Lid geworden
12 jul 2011
Berichten
233
Probleem
Ik heb een timer-macro die gedurende een lange periode om de 10 sec een beeld ververst.
Wanneer ik deze macro gedurende die periode wil stoppen, kan ik op ESC drukken en krijg dan een fout melding 1004 waarmee ik de macro heb gestopt.
(nou ja, meer grof onderuit schoffel!)

Vraag
Kan ik ook netjes een lopende macro stoppen.
Dit door bijvoorbeeld toetsen invoer af te vangen??
Ik zou dan de timer functie netjes kunnen afbreken en de gebruiker een waarschuwing geven of . . . .

Kortom: Hoe kan ik een 'toetsen-interruptor' maken??
 
maak bvb ergens een vinkje op je blad enz enz
of laat de macro naar een cel kijken die jij op aan of uit zet
 
Sylvester, dank voor reactie.
Helaas werkt je eerste voorstel niet.
- Een knop op een scherm met: Beeld, Volledig Scherm laat geen 2e macro starten. De timer functie loopt immers nog steeds!
Tweede voorstel, werkt ook niet
- Tijdens het lopen van timer kan ik wel een cel laten checken maar hoe kom ik bij die cel ??

Heb wel een idee gekregen door je voorstellen. Ik kan bewust tijdens de Gegevens, Alles Bijwerken een: On Error Resume Next commando opnemen.
De ESC actie levert een Error 1004 op Alles Bijwerken.

Dus opgelost met (even het idee):
. . .
Doorgaan = True
On Error Resume Next
ActiveWorkbook.RefreshAll
If Err.Number <> 0 Then
MeldingStoppen
Doorgaan = False​
End If
If Doorgaan Then
. . .​

Kijk, van het ene idee een komt een andere oplossing!
 
sylvester-ponte,

Zie hier code van de timer.
Gaat dus eigenlijk om: Application.Wait (Now + TimeValue(Tijdsduur)) statement.

Maar waarom doe ik dit?
Gaat om een continue presentatie vanuit Excel.
Excel staat dus in: Beeld, Volledig scherm.
Deze wordt dus om de eenheid: Tijdsduur gerefreshed. ('Tijdsduur' wordt dynamisch opgehaald!)

Sub WaitTest()
Dim Tijdsduur As String
Tijdsduur = "0:01:00"
Application.Wait (Now + TimeValue(Tijdsduur))
ActiveWorkbook.RefreshAll
End Sub

Ik heb ook wel een timer als functie maar die neemt meer processor tijd in beslag.
Sub tijdtest
TimeIt 5​
end Sub​

Function TimeIt(n)
Dim StartTime, EndTime
StartTime = Int(Timer)
Do Until Nowtime > Int(StartTime + n)
Nowtime = Int(Timer)​
Loop
End Function​

Maar goed, ik heb het nu opgelost door de Error 1004 af te vangen met een: On Error Resume Next.
 
Sylvester Ponten,

Dit is inderdaad een interessante optie. Ga hiermee aan de slag.
Lijkt erop dat dit een nette oplossing is. Bedankt voor de tip.

Groet,
HansFrap
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan