Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Makro wiederholen

Makro wiederholen
02.05.2018 14:48:41
Jürgen
Hallo zusammen,
ich bin neu hier und erstelle gerade für meinen Skatclub eine neue Excelliste zum vorbereiten und auswerten der Spieltage.
Die Tischverteilung habe ich über die Funktion Zufallszahl gelöst. Jetzt gibt es aber das Problem, dass einzelne nicht zusammen an einem Tisch sitzen möchten. Dies hat verschiedenste Gründe und muss hier sicher nicht erörtert werden.
Ich habe das so gelöst, wenn in der Zelle H2 der Wert "3" erscheint, dann ist die Tischverteilung in Ordnung.
Das Makro für die Auslosung habe ich aufgezeichnet und ist wie folgt.
Sub mischen()
' mischen Makro
Range("H5:I5").Select
Application.CutCopyMode = False
Selection.Copy
Range("H6:I55").Select
Selection.PasteSpecial Paste:=xlPasteFormulas, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
Range("H6:H55").Select
Application.CutCopyMode = False
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Range("D6:AA55").Select
Application.CutCopyMode = False
ActiveWorkbook.Worksheets("Tagesprotokoll aktuell").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("Tagesprotokoll aktuell").Sort.SortFields.Add Key:= _
Range("H6:H55"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
xlSortNormal
With ActiveWorkbook.Worksheets("Tagesprotokoll aktuell").Sort
.SetRange Range("D6:AA55")
.Header = xlGuess
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
Range("I6:I55").Select
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Range("R6").Select
Application.CutCopyMode = False
Selection.Copy
Range("R7:R55").Select
Selection.PasteSpecial Paste:=xlPasteFormulas, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
End Sub

Dieses Makro soll jetzt so oft laufen, bis in der Zelle H2 der Wert "3" erscheint. Alle anderen möglichen Werte sind größer 3.
Wäre toll, wenn mir jemand hier helfen könnte.
Schon jetzt vielen Dank dafür, auch im Namen der Skatfreunde 09 aus Berlin/Steglitz.
Gruß
Jürgen Reinecke
Anzeige

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Makro wiederholen
02.05.2018 15:04:09
Daniel
Hi
schreibe ein zweits Makro, welches das erste in einer Schleife so oft wiederholt, bis in H2 die 3 steht. Dazu verwendet man die DO-LOOP-Schleife.
Sub Mischen_Wiederholen_bis_es_passt()
Do
Call Mischen
Loop Until Range("H2").Value = 3
End Sub

Gruß Daniel
Anzeige
AW: Makro wiederholen
02.05.2018 22:34:31
Jürgen
Hallo Daniel,
ganz lieben Dank. Habs gleich so gemacht wie von Dir beschrieben und es klappt super.
Nochmals Vielen Dank.
Gruß
Jürgen
;
Anzeige
Anzeige

Infobox / Tutorial

Makro in Excel wiederholen


Schritt-für-Schritt-Anleitung

Um ein Makro in Excel zu wiederholen, kannst du eine DO-LOOP-Schleife verwenden. Hier sind die Schritte, die du befolgen solltest:

  1. Öffne den Visual Basic-Editor:

    • Drücke ALT + F11, um den Editor zu öffnen.
  2. Erstelle das erste Makro:

    • Füge den folgenden Code in ein neues Modul ein:
    Sub mischen()
        ' mischen Makro
        Range("H5:I5").Select
        Application.CutCopyMode = False
        Selection.Copy
        Range("H6:I55").Select
        Selection.PasteSpecial Paste:=xlPasteFormulas, Operation:=xlNone, _
            SkipBlanks:=False, Transpose:=False
        Range("H6:H55").Select
        Application.CutCopyMode = False
        Selection.Copy
        Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
            :=False, Transpose:=False
        Range("D6:AA55").Select
        Application.CutCopyMode = False
        ActiveWorkbook.Worksheets("Tagesprotokoll aktuell").Sort.SortFields.Clear
        ActiveWorkbook.Worksheets("Tagesprotokoll aktuell").Sort.SortFields.Add Key:= _
            Range("H6:H55"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
            xlSortNormal
        With ActiveWorkbook.Worksheets("Tagesprotokoll aktuell").Sort
            .SetRange Range("D6:AA55")
            .Header = xlGuess
            .MatchCase = False
            .Orientation = xlTopToBottom
            .SortMethod = xlPinYin
            .Apply
        End With
        Range("I6:I55").Select
        Selection.Copy
        Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
            :=False, Transpose:=False
        Range("R6").Select
        Application.CutCopyMode = False
        Selection.Copy
        Range("R7:R55").Select
        Selection.PasteSpecial Paste:=xlPasteFormulas, Operation:=xlNone, _
            SkipBlanks:=False, Transpose:=False
    End Sub
  3. Erstelle das wiederholende Makro:

    • Füge einen weiteren Codeblock hinzu, um das erste Makro zu wiederholen:
    Sub Mischen_Wiederholen_bis_es_passt()
        Do
            Call mischen
        Loop Until Range("H2").Value = 3
    End Sub
  4. Führe das wiederholende Makro aus:

    • Schließe den Visual Basic-Editor und gehe zurück zu Excel.
    • Drücke ALT + F8, wähle Mischen_Wiederholen_bis_es_passt aus und klicke auf „Ausführen“.

Häufige Fehler und Lösungen

  • Fehler: Das Makro wird nicht ausgeführt.
    Lösung: Stelle sicher, dass das erste Makro (mischen) korrekt funktioniert, bevor du das wiederholende Makro ausführst.

  • Fehler: Endlosschleife.
    Lösung: Überprüfe, ob die Zelle H2 tatsächlich irgendwann den Wert "3" annimmt. Wenn nicht, wird das Makro unendlich oft wiederholt.


Alternative Methoden

Eine alternative Methode zum wiederholten Ausführen eines Befehls in Excel ist die Verwendung von Formeln oder BedConditional Formatting. Du kannst auch die Excel-Tabelle verwenden, um die Daten dynamisch zu aktualisieren, ohne ein Makro zu verwenden.


Praktische Beispiele

Ein praktisches Beispiel für die Verwendung eines wiederholenden Makros in Excel könnte die Zufallszahlengenerierung für Tischverteilungen in einem Spiel sein. Du kannst das oben beschriebene Makro verwenden, um sicherzustellen, dass alle Spieler gemäß bestimmten Regeln platziert werden, bis die Bedingungen erfüllt sind.


Tipps für Profis

  • Teste dein Makro in einer Kopie deiner Excel-Datei, um Datenverluste zu vermeiden.
  • Verwende das Debugging-Tool, um Fehler im Code zu finden.
  • Dokumentiere deinen Code mit Kommentaren, damit du und andere Benutzer später verstehen, was jeder Teil des Codes bewirkt.

FAQ: Häufige Fragen

1. Wie kann ich ein Makro in Excel starten?
Du kannst ein Makro starten, indem du ALT + F8 drückst und das gewünschte Makro aus der Liste auswählst.

2. Was ist eine DO-LOOP-Schleife?
Eine DO-LOOP-Schleife ist eine Programmierstruktur, die es dir ermöglicht, einen bestimmten Codeblock mehrmals auszuführen, bis eine bestimmte Bedingung erfüllt ist.

3. Kann ich das Makro auf andere Excel-Versionen anwenden?
Ja, die beschriebenen Makros sollten in den meisten modernen Excel-Versionen funktionieren, einschließlich Excel 2010, 2013, 2016 und 2019.

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