VBA-Code-Optimierung
20.07.2015 14:39:10
Herman
ich habe folgenden VBA-Code, der nach einer gewissen Zeit, Excel entweder stark verlangsamt oder zum Absturz bringt (>24h Laufzeit). Ich glaube es liegt daran, dass Excel mit "Application.Ontime"-Anweisungen vollläuft. Meiner Ansicht nach, müsste ich einfach nur, wenn die entsprechende Uhrzeit nicht eingetreten ist, On.Time für DIESE Uhrzeit stoppen, über schedule:=false bekomme ich dies aber nicht wirklich hin. Hier aber zunächst mein Code. Möglicherweise sind auch grundlegende Denkfehler enthalten.
Option Explicit
Public stunde As Integer
Public minute As Integer
Sub Workbook_Open()
If MsgBox("Daten updaten?", vbOKCancel, "Update") = vbOK Then
Application.Run "oeffnen"
Public Sub oeffnen()
Dim i As Integer
Dim x As Integer
stunde = 0
minute = 10
For i = 0 To 150
Application.OnTime TimeSerial(stunde, minute, 0), "HoleDaten" ', TimeSerial(stunde, minute, 31)
minute = minute + 10
If minute = 60 Then
minute = 0
stunde = stunde + 1
End If
If stunde = 24 And minute = 0 Then
GoTo Caller
End If
If stunde = 23 And minute = 60 Then
GoTo Caller
End If
Next i
Caller:
Call schleife
End Sub
Sub Makr()
Nicht-relevanter-Code
Application.OnTime Now + TimeSerial(0, 9, 0), "oeffnen"
End Sub
Public Sub schleife()
Application.OnTime Now + TimeSerial(0, 0, 30), "oeffnen"
End Sub
Kurz zusammengefasst: Das Makro "HoleDaten" soll immer nur zur vollen zehntem Minute einer Stunde ausgeführt werden (also 0, 10, 20, 30, 40, 50).
Wenn "die Zeit nicht gekommen ist" soll die Überprüfung solange wiederholt werden (Sub schleife), bis die Zeit "gekommen ist".
Dann wird der eigentliche Code in HoleDaten ausgeführt, HoleDaten öffnet nach dessen Ausführung noch ein weiteres Makro "Sub Makr", welches unter anderem einen Datenexport anstößt und die Zeitüberprüfung nach 9 Minuten wieder auslöst.
Wie kann ich die ganze Thematik "Führe ein Makro nur zur vollen 10. Minute einer Stunde aus" besser gestalten? Wo liegen Anfängerfehler?
Danke für den Rat!