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

Makro zyklisch ausführen?

Forumthread: Makro zyklisch ausführen?

Makro zyklisch ausführen?
21.12.2006 15:37:36
Bernhard
Hallo zusammen,
habe folgendes winziges Makro geschrieben:

Sub Empfehlung_Bandlänge()
If Worksheets("Produkt&Maschine").Range("B8").Value <> "?" & Worksheets("Produkt&Maschine").Range("B15").Value <> "?" Then
Worksheets("Produkt&Maschine").Range("G21").Value = Worksheets("Produkt&Maschine").Range("B8").Value + Worksheets("Produkt&Maschine").Range("B15").Value
Worksheets("Produkt&Maschine").Range("G29").Value = Worksheets("Produkt&Maschine").Range("B8").Value + Worksheets("Produkt&Maschine").Range("B15").Value
Else
Worksheets("Produkt&Maschine").Range("G21").Value = "?"
Worksheets("Produkt&Maschine").Range("G29").Value = "?"
End If
End Sub

Jetzt möchte ich, dass es im Hintergrund selbständig immer wieder ausgeführt wird (also ohne dass ich auf Play drücke).
Ist sowas möglich? Wie geht das?
Vielen Dank für Eure Hilfe
Bernhard
Anzeige

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

Betreff
Datum
Anwender
Anzeige
AW: Makro zyklisch ausführen?
21.12.2006 15:47:32
Fred
Hi,

Sub Empfehlung_Bandlänge()
Do
With Worksheets("Produkt&Maschine")
If .Range("B8").Value <> "?" & .Range("B15").Value <> "?" Then
.Range("G21").Value = .Range("B8").Value + .Range("B15").Value
.Range("G29").Value = .Range("B8").Value + .Range("B15").Value
Else
.Range("G21").Value = "?"
.Range("G29").Value = "?"
End If
End With
Loop
End Sub

mfg Fred
Anzeige
AW: Makro zyklisch ausführen?
22.12.2006 07:49:17
Bernhard
Hallo,
erstmal vielen Dank für die schnelle Hilfe! Die Verwendung von "With - End With" ist auch sehr hilfreich.
Allerdings habe ich mit der Schleife das Problem, dass Excel dann nicht mehr reagiert. Blokiert die Endlosschleife weiteres Vorgehen?
Weiterhin scheint meine If-Abfrage nicht zu funktionieren, da in der Zielzelle z.B. "?" steht, wenn die Bezugszellen beide ein Fragezeichen aufweisen.(oder "ab", wenn jeweils a und b in den Bezugszellen steht)
Hat jemand eine Idee warum?
Anzeige
AW: Makro zyklisch ausführen?
22.12.2006 07:54:36
Bernhard
Hallo nochmal, was ich gerade geschrieben habe war natürlich zum Teil Mist.
Wenn "a" und "b" drin steht ist das ja "?". Aber es passiert halt auch, wenn "?" in beiden oder einer Zelle steht.
AW: Makro zyklisch ausführen?
22.12.2006 08:26:28
Bernhard
Ich bins nochmal,
habe festgestellt, dass ich eine falsch Und-Verknüpfung verwendet habe (schlimm, wenn man mehr als drei Programmiersprachen gleichzeitig verwendet).
Das Problem mit der Schleife habe ich leider immer noch...
Vielen Dank für eure Hilfe
Anzeige
AW: Makro zyklisch ausführen?
22.12.2006 11:53:26
Heiko
Hallo,
warum willst du das denn zyklisch abarbeiten.
Wann und wodurch ändert sich den der Inhalt der Zellen die du im Vergleich drin hast?
Ducrh manuelle Eingabe, durch eine Berechnung oder durch was ?!
Gruß Heiko
PS: Rückmeldung wäre nett !
AW: Makro zyklisch ausführen?
22.12.2006 13:56:16
Bernhard
Hallo,
die Inhalte werden manuell geändert. Eine Detektierung, ob sich der Inhalt der Felder geändert hat mit anschließender automatischer Makroausführung wäre optimal.
Geht das?
Danke,
Bernhard
Anzeige
AW: Makro zyklisch ausführen?
22.12.2006 14:15:06
Heiko
Hallo Bernhard,
diesen Code in das Codefenster der Tabelle die du überwachen willst.

Private Sub Worksheet_Change(ByVal Target As Range)
' Hier dann dein Code rein OHNE DIE SCHLEIFE !!!
' Das soll nur zeigen das es geht, kann später raus.
MsgBox "Es wurde gerade was geändert, in Zelle " & Target.Address, vbInformation
End Sub

Oder den wenn du nur bei Änderungen in B8 oder B15 was machen willst.

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address(False, False) = "B8" Or Target.Address(False, False) = "B15" Then
' Hier dann dein Code rein OHNE DIE SCHLEIFE !!!
' Das soll nur zeigen das es geht, kann später raus.
MsgBox "Es wurde gerade was geändert, in Zelle " & Target.Address, vbInformation
End If
End Sub

Die Afrage wo was geändert wurde läßt sich bei Bedarf auch noch erweitern.
Gruß Heiko
PS: Rückmeldung wäre nett !
Anzeige
AW: Makro zyklisch ausführen?
22.12.2006 14:01:57
Daniel
Hallo
informier dich mal über die Application.OnTime-Eigenschaft.
Damit kann man ein Makro zeitgesteuert aufrufen.
Du müsstest dann 2 Makros schreiben, die sich gegenseitig mit einem Versatz von 10 Minuten aufrufen.
Gruß, Daniel Eisert
AW: Makro zyklisch ausführen?
22.12.2006 14:11:55
Bernhard
Hallo,
ist das im standardumfang enthalten? Wenn ich in VB danach suche (Suchen-Funktion) finde ich es nicht...
Bernhard
Anzeige
AW: Makro zyklisch ausführen?
22.12.2006 14:23:14
Daniel
Hallo
bei mir ja.
gib mal im Direktfenster "Application.OnTime" ein, sezte den cursor auf "OnTime" und drücke F1. dann sollte die Hilfe erscheinen, falls sie installiert ist.
Gruß, Daniel
;
Anzeige

Infobox / Tutorial

Makro zyklisch ausführen in Excel


Schritt-für-Schritt-Anleitung

Um ein Makro in Excel zyklisch auszuführen, gibt es verschiedene Ansätze. Hier ist eine einfache Möglichkeit, dies zu erreichen:

  1. Öffne den VBA-Editor:

    • Drücke Alt + F11, um den VBA-Editor zu öffnen.
  2. Einfügen eines neuen Moduls:

    • Klicke mit der rechten Maustaste auf das Projektfenster und wähle „Einfügen“ > „Modul“.
  3. Füge dein Makro ein:

    • Kopiere dein Makro in das Modul:
      Sub Empfehlung_Bandlänge()
      If Worksheets("Produkt&Maschine").Range("B8").Value <> "?" And Worksheets("Produkt&Maschine").Range("B15").Value <> "?" Then
         Worksheets("Produkt&Maschine").Range("G21").Value = Worksheets("Produkt&Maschine").Range("B8").Value + Worksheets("Produkt&Maschine").Range("B15").Value
         Worksheets("Produkt&Maschine").Range("G29").Value = Worksheets("Produkt&Maschine").Range("B8").Value + Worksheets("Produkt&Maschine").Range("B15").Value
      Else
         Worksheets("Produkt&Maschine").Range("G21").Value = "?"
         Worksheets("Produkt&Maschine").Range("G29").Value = "?"
      End If
      End Sub
  4. Erstelle eine zeitgesteuerte Ausführung:

    • Füge das folgende Makro hinzu, um das vorherige Makro alle 10 Minuten auszuführen:
      Sub StartTimer()
      Application.OnTime Now + TimeValue("00:10:00"), "Empfehlung_Bandlänge"
      End Sub
  5. Starte den Timer:

    • Rufe StartTimer auf, um die zyklische Ausführung zu starten.
  6. Beende den Timer (optional):

    • Verwende Application.OnTime mit der gleichen Zeit, um den Timer zu stoppen, wenn nötig.

Häufige Fehler und Lösungen

  • Excel reagiert nicht:

    • Wenn du eine Endlosschleife im Makro verwendest, kann Excel nicht mehr reagieren. Stattdessen verwende die Application.OnTime Methode für eine zeitgesteuerte Ausführung.
  • Wenn die If-Abfrage nicht funktioniert:

    • Überprüfe, ob die Zellreferenzen korrekt sind und die Bedingungen richtig formuliert sind. Verwende And statt &.

Alternative Methoden

Eine andere Methode, um Änderungen in spezifischen Zellen zu erkennen und darauf zu reagieren, ist die Verwendung des Worksheet_Change Ereignisses. Füge dazu diesen Code in das Codefenster deiner Tabelle ein:

Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, Me.Range("B8,B15")) Is Nothing Then
        Call Empfehlung_Bandlänge
    End If
End Sub

Praktische Beispiele

Hier ist ein Beispiel, wie du dein Makro für manuelle Eingaben automatisieren kannst:

Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Address = "$B$8" Or Target.Address = "$B$15" Then
        Empfehlung_Bandlänge
    End If
End Sub

Tipps für Profis

  • Debugging: Verwende MsgBox oder Debug.Print, um den Fortschritt deines Makros zu überwachen und Probleme schnell zu identifizieren.
  • Leistung optimieren: Deaktiviere Bildschirmaktualisierungen mit Application.ScreenUpdating = False vor der Ausführung des Makros und aktiviere sie danach wieder.

FAQ: Häufige Fragen

1. Wie kann ich das Makro wiederholt ausführen, ohne dass Excel abstürzt? Verwende die Application.OnTime Methode, um ein Makro zeitgesteuert auszuführen, anstatt eine Endlosschleife zu verwenden.

2. Ist Application.OnTime standardmäßig in Excel verfügbar? Ja, Application.OnTime ist eine integrierte Funktion in Excel VBA und sollte in allen Versionen verfügbar sein.

3. Was mache ich, wenn die Zellwerte nicht wie erwartet aktualisiert werden? Überprüfe deine If-Abfragen und stelle sicher, dass die Zellreferenzen korrekt sind. Achte darauf, dass du das richtige Arbeitsblatt ansprichst.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige