Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1720to1724
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Schleife mit "Application.Wait" verlassen.
15.11.2019 16:33:52
Bergmann
Guten Tag,
ich habe in einem Tabellenblatt im Bereich (H2:H21) Termine im Uhrzeitformat eingetragen. In der Zelle G24 ermittle ich mit der Formel =MIN(H2:H21) den nächsten Termin. Dann lasse ich die Zeit bis zu diesem Termin in der Zelle G23 mit der Formel =WENN(G24 in Minuten berechnen und anzeigen. Solange sich nichts mehr ändert bleiben die berechneten Werte unverändert. Deshalb habe ich eine Schaltfäche eingefügt, die das Arbeitsblatt mt ActiveSheet.Calculate neu berechnet.
Soweit, so gut. Aber nun möchte ich über diese Schaltfläche einen Makro starten, der den Wert der Zelle abfragt und wenn der Termin noch nicht erreicht ist, das Blatt neu berechnet, eine Pause einlegt und das Prozedere von vorn startet. Das habe ich mit:

Private Sub CommandButton3_Click()
While Range("G23")  "Termin fällig!"
ActiveSheet.Calculate
Application.Wait Now + TimeSerial(0, 0, 10)
Wend
End Sub

gelöst. Aber leider läuft der Makro nun bis zur Erreichung der Abbruchbedingung und lässt keine Eingaben im Tabellenblatt zu und ich kann ihn nur mit gehaltener ESC-Taste in den Abbruch oder Debugmodus zwingen.
Ich suche nun eine Möglichkit, den Makro eleganter zu beenden. Wer hat da einen Tip für mich, bzw. wer kann mir weiterhelfen?
Viele Grüße, Thomas

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Schleife mit "Application.Wait" verlassen.
15.11.2019 16:58:56
Nepumuk
Hallo Thomas,
teste mal:
Option Explicit

Private Sub CommandButton3_Click()
    Call TimerStart(Name)
End Sub

In einem Standardmodul:
Option Explicit

Public Sub TimerStart(ByVal pvstrWorksheetName As String)
    Call Worksheets(pvstrWorksheetName).Calculate
    If Worksheets(pvstrWorksheetName).Range("G23").Text <> "Termin fällig!" Then _
        Call Application.OnTime(EarliestTime:=Now + TimeSerial(0, 0, 10), _
        Procedure:="'TimerStart """ & pvstrWorksheetName & """'", Schedule:=True)
End Sub

Gruß
Nepumuk
Anzeige
AW: Schleife mit "Application.Wait" verlassen.
15.11.2019 17:36:40
Bergmann
Hallo Nepomuk,
Danke für die prompte und genau den Punkt getroffene Antwort auf meine Frage. Mein Problem ist damit aus der Welt geschafft.
Nochmal Danke und Gruß,
Thomas

300 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige