hab hier ein Makro mit mehreren Subs, die permanent ablaufen. Ein Sub davon soll allerdings nur alle 60 Sekunden aufgerufen werden.
Application.Wait Now + TimeSerial(0, 0, 60) hilft mir da also nicht weiter, oder?
Gruß
Hanna
Sub Test()
Application.OnTime Now + TimeSerial(0, 0, 60), "Test"
MsgBox "x"
End Sub
Die
Sub muss einmal extern aufgerufen werden und startet sich dann alle 60 Sekunden selbst. Statt _
der MsgBox fügst Du Deinen Code ein.
Schönen Gruß,
Andi
Sub Test()
Application.OnTime Now + TimeSerial(0, 0, 60), "Test"
Rows(6).ClearContents
End Sub
Microsoft Excel kann das Makro C/:XXXX\Shett.xls`!Test nicht finden.
Was hab ich da wieder falsch gemacht?
Gruß
Hanna
Sub Show_change3()
Application.Wait Now + TimeSerial(0, 0, 1)
For I = 10 To 50
If Range("L" & I).Value myArray3(I - 10) Then
Application.ScreenUpdating = False
Rows(I).Copy
Rows(6).PasteSpecial xlPasteValues
Application.CutCopyMode = False
Range("L" & I).Select
Call sndPlaySound32("c:\pos", 1)
Application.ScreenUpdating = True
myArray3(I - 10) = Range("L" & I)
End If
Next I
Call Test
End Sub
Sub Test()
Application.OnTime Now + TimeSerial(0, 0, 60), "Test"
Rows(8).ClearContents
Call Show_change4
End Sub
.....
Sub Show_change3()
Application.Wait Now + TimeSerial(0, 0, 1)
For I = 10 To 50
If Range("L" & I).Value myArray3(I - 10) Then
Application.ScreenUpdating = False
Rows(I).Copy
Rows(6).PasteSpecial xlPasteValues
Application.CutCopyMode = False
Range("L" & I).Select
Call sndPlaySound32("c:\pos", 1)
Application.ScreenUpdating = True
myArray3(I - 10) = Range("L" & I)
End If
Next I
Call Test
End Sub
Sub Test()
Application.OnTime Now + TimeSerial(0, 0, 60), "Test"
Rows(8).ClearContents
Call Show_change4
End Sub
.....
Sub Test()
Application.OnTime Now + TimeSerial(0, 0, 60), "Test"
Rows(8).ClearContents
End Sub
Sub Test()
Application.OnTime Now + TimeSerial(0, 0, 60), "Test"
Rows(8).ClearContents
End Sub
Um ein Sub in Excel VBA nur alle 60 Sekunden auszuführen, kannst du die Application.OnTime
Methode verwenden. Hier ist eine einfache Schritt-für-Schritt-Anleitung:
Öffne den VBA-Editor: Drücke ALT + F11
, um den VBA-Editor zu öffnen.
Füge ein neues Modul hinzu: Klicke mit der rechten Maustaste auf "VBAProject (DeineDatei.xlsx)" > Einfügen
> Modul
.
Kopiere den folgenden Code in das Modul:
Sub Test()
Application.OnTime Now + TimeSerial(0, 0, 60), "Test"
MsgBox "Das Makro wird alle 60 Sekunden ausgeführt!"
End Sub
Starte das Makro: Du kannst das Makro einmal manuell starten, entweder über Extras > Makro > Makros
oder indem du Call Test
aus einem anderen Makro heraus aufrufst.
Ersetze den MsgBox-Befehl: Füge den gewünschten Code anstelle der MsgBox ein, um deine spezifischen Operationen auszuführen.
Fehler: "Makro kann nicht gefunden werden"
Lösung: Stelle sicher, dass das Sub im richtigen Modul ist. Wenn du es aus einem anderen Modul aufrufst, benenne das Sub entsprechend oder referenziere das richtige Arbeitsblatt. Beispiel: Sheets("Tabelle1").Rows(8).ClearContents
.
Fehler: Anwendung funktioniert nicht wie erwartet
Lösung: Überprüfe, ob das Makro korrekt gestartet wurde und ob die Zeitintervalle richtig gesetzt sind. Stelle sicher, dass keine anderen Makros den Ablauf stören.
Eine Alternative zur Nutzung von Application.OnTime
ist die Verwendung von Timer-Funktionen in Excel. Du kannst auch die Excel-Funktion Now
verwenden, um Zeitstempel zu überprüfen und die Ausführung des Codes zu steuern. Beachte jedoch, dass dies möglicherweise nicht so präzise ist wie OnTime
.
Hier ist ein Beispiel, wie du alle 60 Sekunden eine bestimmte Zeile löschen kannst:
Sub Test()
Application.OnTime Now + TimeSerial(0, 0, 60), "Test"
Sheets("Tabelle1").Rows(8).ClearContents
End Sub
In diesem Beispiel wird die Zeile 8 in "Tabelle1" alle 60 Sekunden gelöscht. Stelle sicher, dass du den Tabellennamen anpasst.
Verwende ScreenUpdating
: Deaktiviere Application.ScreenUpdating = False
am Anfang deines Codes, um die Leistung zu verbessern, und aktiviere es wieder am Ende.
Fehlerbehandlung: Füge Fehlerbehandlungsroutinen hinzu, um unerwartete Fehler zu vermeiden, die den Ablauf deines Makros stören könnten.
Testen in einer sicheren Umgebung: Teste deine Makros immer in einer Kopie deiner Datei, um ungewollte Änderungen an deinen Daten zu vermeiden.
1. Wie stoppe ich das laufende Makro?
Du kannst das Makro stoppen, indem du Excel schließt oder den Task-Manager verwendest, um Excel zu beenden.
2. Kann ich mehrere Subs gleichzeitig mit OnTime
planen?
Ja, du kannst mehrere Subs mit unterschiedlichen Zeitintervallen planen, indem du für jedes Sub eine eigene OnTime
-Anweisung verwendest.
3. Funktioniert das auch in Excel 365?
Ja, die Application.OnTime
Methode ist in allen gängigen Excel-Versionen, einschließlich Excel 365, verfügbar.
Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden
Suche nach den besten AntwortenEntdecke unsere meistgeklickten Beiträge in der Google Suche
Top 100 Threads jetzt ansehen