Excel VBA "CommandButton1_Click" bei bestimmter Bedingung nach bestimmter Zeit ausführen

...komplette Frage anzeigen

1 Antwort

VBA ist ereignisorientiert, d. h. von allein startet kein Makro.

Es gibt aber das Change-Ereignis des Arbeitsblattes. (Du kannst oben links das Steuerelement auswählen, für das du Code schreiben willst - hier "Worksheet", und danach rechts das betreffende Ereignis - hier "Change".

Am besten prüfst du, ob Range die Zelle I7 enthält, aber das ist bei solch einem einfachen Beispiel wohl nicht nötig.

Bei If kannst du Else auch komplett weglassen.

Für den Zeitablauf kannst du die Sleep-Funktion nehmen, siehe http://www.vbarchiv.net/api/api_sleep.html



Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long )

Die Declare-Anweisung muss möglichst weit oben stehen, am besten unter "Option Explicit" und den ersten Kommentaren (so vorhanden).

Du kannst mit der Sleep-Funktion die Programmausführung für lange Zeit anhalten, aber in der Zeit reagiert das Programm nicht. Vielleicht reagiert Excel selbst dann noch, aber kein Makro.

Du kannst dann den Sleep-Befehl in eine Schleife setzen, z. B.

For i = 1 To 200 ' 20 Sekunden in Zehntelsekunden
    Sleep 100 '1/10 Sekunde in Millisekunden
    DoEvents 'Das Programm soll weiterlaufen
Next i

Wobei dann die Anweisung auch dann noch ausgeführt wird, wenn sich in der Zwischenzeit der Inhalt der interessierenden Zelle geändert hat. Hier muss man ggf. eine weitere Abfrage einbauen.

Iamiam 12.05.2015, 01:17

gugl auch mal nach Application.OnTime und Wait bzw schau in der Hilfe nach! (Bin selbst nicht firm in sowas)

0

Was möchtest Du wissen?