Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Sub nur alle 60 Sekunden ausführen

Forumthread: Sub nur alle 60 Sekunden ausführen

Sub nur alle 60 Sekunden ausführen
11.12.2007 14:29:04
HannaG
Hallo,
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

Anzeige

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Sub nur alle 60 Sekunden ausführen
11.12.2007 14:31:00
Andi
Hi,
verwende ontime:

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

Anzeige
AW: Sub nur alle 60 Sekunden ausführen
11.12.2007 18:22:34
HannaG
Nochmal für ganz Dumme:
Will ich z.b. die Zeile alle 60 Sekunde löschen, sollte der Code so aussehen?
Starte das Makro Test manuell und erhalte dann immer die Meldung

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

Anzeige
AW: Sub nur alle 60 Sekunden ausführen
12.12.2007 11:28:00
Andi
Hi,
wo steht denn das Makro und von wo rufst Du es wie auf?
Schönen Gruß,
Andi

AW: Sub nur alle 60 Sekunden ausführen
12.12.2007 12:56:39
HannaG
Microsoft Excel Objekt,Tabelle2.
Starte den gesammten Code und dann noch manuel das Makro "Test",
Läuft erst durch und dann kommt nach 20 Sekunden etwa die o.g. Meldung.
Gruß
Hanna
Aussschnitt:
....

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


.....

Anzeige
AW: Sub nur alle 60 Sekunden ausführen
12.12.2007 13:13:00
HannaG
Microsoft Excel Objekt,Tabelle2.
Starte den gesammten Code und dann noch manuel das Makro "Test",
Läuft erst durch und dann kommt nach 20 Sekunden etwa die o.g. Meldung.
Gruß
Hanna
Aussschnitt:
....

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


.....

Anzeige
AW: Sub nur alle 60 Sekunden ausführen
12.12.2007 14:24:37
Andi
Hi,
kopiere das Makro mal in ein Standard-Modul.
Dazu müsstest Du noch im Code das betreffende sheet referenzieren, etwa
sheets("Tabelle1").Rows(8).ClearContents
Schönen Gruß,
Andi

AW: Sub nur alle 60 Sekunden ausführen
12.12.2007 15:49:00
HannaG
Oh, je. Da fehlen mir die Grundlagen. Also einfach den Code unten in neues Modul(Modul2 wäre das) reinkopieren?
Und wo referenzier ich das? Sagen wir, das Sheet heißt Sheet1, ist Tabelle 2?
LG
Hanna

Sub Test()
Application.OnTime Now + TimeSerial(0, 0, 60), "Test"
Rows(8).ClearContents
End Sub


Anzeige
AW: Sub nur alle 60 Sekunden ausführen
12.12.2007 15:54:00
Andi
Hi,
Also einfach den Code unten in neues Modul(Modul2 wäre das) reinkopieren?
Genau so.
Und wo referenzier ich das?
Wie ich schon schrieb:
statt
Rows(8).ClearContents
schreibst Du
Sheets("Tabelle1").Rows(8).ClearContents
den Tabellennamen musst Du natürlich noch anpassen.
Wenn Du dann Dein Makro einmal aufrufst, entweder über Extras, Makro, Makros oder per
Call Test
aus einem anderen Makro heraus, dann startet es sich ab dann alle 60 Sekunden selbst.
Schönen Gruß,
Andi

Anzeige
AW: Sub nur alle 60 Sekunden ausführen
12.12.2007 16:29:00
HannaG
Oh, je. Da fehlen mir die Grundlagen. Also einfach den Code unten in neues Modul(Modul2 wäre das) reinkopieren?
Und wo referenzier ich das? Sagen wir, das Sheet heißt Sheet1, ist Tabelle 2?
LG
Hanna

Sub Test()
Application.OnTime Now + TimeSerial(0, 0, 60), "Test"
Rows(8).ClearContents
End Sub


Anzeige
Doppelt oT
11.12.2007 14:32:06
Hajo_Zi
;
Anzeige

Infobox / Tutorial

Sub nur alle 60 Sekunden ausführen


Schritt-für-Schritt-Anleitung

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:

  1. Öffne den VBA-Editor: Drücke ALT + F11, um den VBA-Editor zu öffnen.

  2. Füge ein neues Modul hinzu: Klicke mit der rechten Maustaste auf "VBAProject (DeineDatei.xlsx)" > Einfügen > Modul.

  3. 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
  4. 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.

  5. Ersetze den MsgBox-Befehl: Füge den gewünschten Code anstelle der MsgBox ein, um deine spezifischen Operationen auszuführen.


Häufige Fehler und Lösungen

  • 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.


Alternative Methoden

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.


Praktische Beispiele

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.


Tipps für Profis

  • 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.


FAQ: Häufige Fragen

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.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige