Registriert seit: 12.03.2025
Version(en): 2025
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
Registriert seit: 18.10.2020
Version(en): 365
14.03.2025, 14:57
(Dieser Beitrag wurde zuletzt bearbeitet: 14.03.2025, 15:30 von Warkings.)
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
Registriert seit: 22.09.2024
Version(en): 2010
14.03.2025, 14:59
(Dieser Beitrag wurde zuletzt bearbeitet: 14.03.2025, 15:01 von knobbi38.)
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
Registriert seit: 12.03.2025
Version(en): 2025
14.03.2025, 15:14
(Dieser Beitrag wurde zuletzt bearbeitet: 14.03.2025, 15:16 von vantom.)
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.
Registriert seit: 18.10.2020
Version(en): 365
(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. 
Wo hast Du den Code eingefügt?
Registriert seit: 12.03.2025
Version(en): 2025
Hab den ersten Code Teil in "DieseArbeitsmappe" eingefügt und den Zweiten Teil in dem Modul, wo er vorher halt auch war.
Registriert seit: 18.10.2020
Version(en): 365
14.03.2025, 15:55
(Dieser Beitrag wurde zuletzt bearbeitet: 14.03.2025, 15:58 von Warkings.)
(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
?
Registriert seit: 12.03.2025
Version(en): 2025
Hab das "Option Explicit" mal hinzugefügt de nDebugger drüberlaufen lassen jz klappt es tatsäclich vielen dank!!!