Loop durch schließen beenden
#1
Ich habe folgenden Loop: 

Sub CheckFileLoop()
    Application.DisplayAlerts = False
    Dim filePath As String
    filePath = "N:\Public\CO_Bau\_template\is-valid-check.txt"
       
    Dim fileContent As String
    fileContent = ReadFileContent(filePath)
   
    If InStr(1, fileContent, "valid", vbTextCompare) = 0 Then
        AutoSaveAndClose1
    End If
   
    Application.OnTime Now + TimeValue("00:00:05"), "CheckFileLoop"

End Sub

Wie schaffe ich das dieser beendet wird wenn die Excel Liste manuell geschlossen wird?

Aktuell wird die Liste jedes mal neu geöffnet wenn man versucht sie zu schließen. Dass passiert abr auch nur wenn eine andere Excel Liste offen ist.

Mfg Jonas
Antworten Top
#2
KI könnte helfen

Zitat:Das Problem entsteht, weil Application.OnTime weiterhin aktiv bleibt, auch wenn die Datei geschlossen wird.

Vor dem Schließen der Datei muss sichergestellt werden, dass der geplante OnTime-Aufruf deaktiviert wird. Dazu kann Application.OnTime mit denselben Parametern aufgerufen werden, jedoch mit Schedule:=False, um ihn zu löschen.

Füge eine Workbook_BeforeClose-Routine hinzu, die den Timer stoppt:

Code:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
    On Error Resume Next
    Application.OnTime EarliestTime:=NextRunTime, Procedure:="CheckFileLoop", Schedule:=False
    On Error GoTo 0
End Sub

In deinem CheckFileLoop-Code speichere den Zeitpunkt der geplanten Ausführung in einer globalen Variable: 


Code:
Public NextRunTime As Date

Sub CheckFileLoop()
    Application.DisplayAlerts = False
    Dim filePath As String
    filePath = "N:\Public\CO_Bau\_template\is-valid-check.txt"
      
    Dim fileContent As String
    fileContent = ReadFileContent(filePath)
  
    If InStr(1, fileContent, "valid", vbTextCompare) = 0 Then
        AutoSaveAndClose1
    End If
  
    ' Zeit für den nächsten geplanten Aufruf speichern
    NextRunTime = Now + TimeValue("00:00:05")
    Application.OnTime NextRunTime, "CheckFileLoop"
End Sub
Antworten Top
#3
Hallo,

dafür brauch man noch keine KI, es reicht, wenn man an einschlägigen Stellen mal nachschaut, wie so etwas programmiert wird:

https://www.online-excel.de/excel/singsel_vba3a94.html
Antworten Top
#4
Super danke,
aber klappt leider nicht

Oh, ja, aber so gut bin ich in dem ganzen Application.OnTime nicht das ich damit umgehen kann das problem ist halt das es einfach nur beendet werden soll wenn ich die liste schließe, wieso muss das so schwer sein. 22
Antworten Top
#5
(14.03.2025, 15:14)vantom schrieb: Super danke,
aber klappt leider nicht

Oh, ja, aber so gut bin ich in dem ganzen Application.OnTime nicht das ich damit umgehen kann das problem ist halt das es einfach nur beendet werden soll wenn ich die liste schließe, wieso muss das so schwer sein. 22

Wo hast Du den Code eingefügt?
Antworten Top
#6
Hab den ersten Code Teil in "DieseArbeitsmappe" eingefügt und den Zweiten Teil in dem Modul, wo er vorher halt auch war.
Antworten Top
#7
(14.03.2025, 15:37)vantom schrieb: Hab den ersten Code Teil in "DieseArbeitsmappe" eingefügt und den Zweiten Teil in dem Modul, wo er vorher halt auch war.

Das hört sich erstmal richtig an.

Hast Du ein Debug/Compile (Debuggen/Kompilieren) ausgeführt?
Und hast Du überall ein
Code:
Option Explicit
?
Antworten Top
#8
Hab das "Option Explicit" mal hinzugefügt de nDebugger drüberlaufen lassen jz klappt es tatsäclich vielen dank!!!
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste