1.6k Aufrufe
Gefragt in Tabellenkalkulation von donau-adler Einsteiger_in (87 Punkte)
Hallo,

ich habe ein Problem mit einer Schleife. Sie läuft eigentlich schon relativ rund, hat aber einen Haken. Ich bräuchte eine zweite Abbruchbedingung.
Die erste ist "Do Until iAnz = 15" -> Abbruch nach 15 Treffern.

Diese soll kombiniert werden, dass wenn in Spalte AC die erste Leerzeile auftritt, das Makro gestoppt wird.

Ich bräuchte also zwei Abbruchbedingungen für diese Schleife. Kann mir hier jemand helfen und mir den Code verraten?


Sub SätzeAufAnderesTabellenblattÜbertragen1()
Const Blatt1 = "Abrechnung_Prüfprotokoll"
Const Blatt2 = "Tabelle1"
Dim i As Integer
Dim iAnz As Integer

Application.ScreenUpdating = False
Sheets(Blatt1).Activate
Range("A1").Select
iAnz = 0
i = 0
Call Erste_Zelle
ActiveCell.Offset(0, 28).Select

Do Until iAnz = 15

If ActiveCell.Value = Range("b2") Then
Selection.EntireRow.Copy
Sheets(Blatt2).Activate
ActiveSheet.Paste
ActiveCell.Offset(1, 0).Select

Sheets(Blatt1).Select
ActiveCell.Offset(1, 0).Select
iAnz = iAnz + 1
Else
ActiveCell.Offset(1, 0).Select
End If
i = i + 1

Loop

Application.CutCopyMode = False
Application.ScreenUpdating = True
MsgBox "Es wurden " & iAnz & " Sätze übertragen"

End Sub

5 Antworten

0 Punkte
Beantwortet von saarbauer Profi (15.6k Punkte)
Hallo,

Du musst in dein Makro eine entsprechende Abfrage einbauen

Etwa so

If Cell(Aktivecell.row, 29) ="" then Exit

müste nach

Do Until iAnz = 15

kommen

Gruß

Helmut
0 Punkte
Beantwortet von saarbauer Profi (15.6k Punkte)
Hallo,

was vergessen

If Cell(Aktivecell.row, 29).value ="" then Exit


Gruß

Helmut
0 Punkte
Beantwortet von donau-adler Einsteiger_in (87 Punkte)
Hallo Helmut,

ich glaube ich habe mich nicht klar genug ausgedrückt.

Das Makro arbeitet von beginnend von Spalte AC jede Zeile ab. Es soll alle werte in die zweite Arbeitsmappe kopieren, welche in B2 stehen (If ActiveCell.Value = Range("b2") Then). Nach 15 gefundenen Einträgen (Do Until iAnz = 15) soll das Makro abbrechen. Das funktioniert auch alles wunderbar. Mein Problem ist jetzt, dass wenn es keine 15 Einträge gibt (evtl. nur 4), er dann abbricht, bzw. bis zum Dateiende weitersucht.

Wäre nett, wenn Du mir hier noch weiterhelfen könntest.

Ich bräuchte eigentlich nur den Code für die kombinierte Abbruchbedingung. 15 Werte finden und bei der ersten Leerzeile die Schleife abbrechen.

Vielen Dank schon mal im Voraus.

Gruß,

Markus.
0 Punkte
Beantwortet von m-o Profi (22.8k Punkte)
Hallo,

oder andere Möglichkeit:

If IsEmpty(Cells(ActiveCell.Row, 29)) = True Then Exit Do


Wie Helmut bereits richtig gesagt hat, musst du die Zeile nach

Do Until iAnz = 15

einfügen.

Gruß

M.O.
0 Punkte
Beantwortet von donau-adler Einsteiger_in (87 Punkte)
Hallo,

Euch beiden vielen Dank für Eure Hilfe.

Mein Makro funktioniert nun einwandfrei.

Viele Grüße,

Markus.
...