Suchen nach einem Makro, das ich aufgezeichnet habe, Zeilen überspringen und nach einer Bedingung enden

492
plshelpmewithexcel

Entschuldigung für die nicht informierte Frage, aber ich habe mich den ganzen Morgen mit Makros befasst, um mir bei einer Aufgabe zu helfen, die ich vervollständige, und ich habe die Antworten, die ich brauche, nicht gefunden, indem ich Google gesucht habe. Ich verwende Windows 10 und Excel 2016. Hier ist das Makro, das ich aufgenommen habe:

Sub biweekly() ' ' biweekly Macro ' ' Keyboard Shortcut: Ctrl+w ' Rows("53:53").Select Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove Range("A52:C52").Select Selection.Cut Destination:=Range("A53:C53") Range("M52").Select Selection.Cut Destination:=Range("M53") Range("D53").Select ActiveCell.FormulaR1C1 = "=R[-2]C+R[-1]C" Range("D53").Select Selection.Copy Range("E53:L53").Select ActiveSheet.Paste Range("D53:L53").Select Application.CutCopyMode = False Selection.Copy Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False Rows("51:52").Select Application.CutCopyMode = False Selection.Delete Shift:=xlUp Range("A54").Select End Sub 

Im Wesentlichen kombiniere ich wöchentliche Reihen zu zweiwöchentlichen Reihen. Ich habe dies getan, bevor ich Pivot-Tabellen und getpivotdata verwendet habe, aber ich habe dieses Mal auf eine elegantere Lösung gehofft. Ich möchte, dass das Makro in einer Schleife abläuft, wenn es fertig ist, und dann drei Zeilen nach unten bewegt wird, um die nächsten paar Wochen danach zu bearbeiten. Wenn ich also in diesem Beispiel die neue Zeile, die ich erstellt habe, jetzt Zeile 51 nach dem Löschen der einzelnen wöchentlichen Zeilen habe, würde ich das tun Gehen Sie gerne zur Zeile 54 und fügen Sie eine neue Zeile darüber ein, um mit der Arbeit an den Reihenpaaren der Woche 52 und 53 zu beginnen.

Ich weiß nicht, wie ich das Makro so schleifen soll, dass es in jeder Schleife die Zeilen nach unten springt. Ich möchte auch, dass ein Makro nicht mehr lauffähig ist, wenn der Wert in Spalte A geändert wird (ich habe ein großes Arbeitsblatt, das alphabetisch mit Namen mit Jahren mit zweiwöchentlich zahlenden Zahlungsdaten sortiert ist), und ich möchte, dass das Makro am Ende eines jeden stoppt Name so, dass ich die Zahlungszeitraum-Verkettung anpassen und erneut für den neuen Namen ausführen kann). Alternativ wäre es eine gute Alternative, zu wissen, wie man es eine bestimmte Anzahl von Malen ausführen lässt (beispielsweise 30).

Jede Hilfe zu diesen Fragen wäre sehr dankbar. Nochmals entschuldigen Sie sich dafür, dass Sie mit Makros und VBE nicht vertraut sind.

1

1 Antwort auf die Frage

0
scenography

Einige Hilfestellungen für Schleifen finden Sie unter So wiederholen Sie Aufgaben mit Ihrem VBA-Code durch Schleifen . Die einfachste Art der Schleife wäre For i = 1 to 30am Anfang und Next iam Ende.

Versuchen Sie für Ihre anderen Fragen die Eigenschaft Offset :

  • Um eine Zelle auszuwählen, die drei Zeilen unter der aktuellen Zelle liegt,
    Selection.Offset(3, 0).Select

  • Um das Makro zu stoppen, wenn sich eine Zelle von der darüber liegenden Zelle unterscheidet,
    If Selection.Value <> Selection.Offset(-3, 0).Value Then Exit Sub

Das Aufzeichnen eines Makros ist ein guter Anfang. Wenn Sie sich mit VBA-Code vertraut machen, werden Sie wahrscheinlich Zeilen zusammenführen, die mit enden .Selectund mit beginnen Selection..