Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1916to1920
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Frage zu Schleife, Ablauf

Frage zu Schleife, Ablauf
24.01.2023 06:21:07
Fred
Hallo Excel Experten,
ich habe eine Frage zu (generellen) Ablauf einer Makro-Schleife.
Das unten angegebene Makro beginnt in der 11ten Zeile,- kopiert u.a. Zellinhalte von Sheet "Tagesplan" in verschiedene Sheets.
Dann wird das Makro2 aufgerufen
Dann wird in der Schleife "der zweite Durchgang" gestartet.
Meine Frage:
Wenn im aufgerufenen "Makro2" u.a. die 11te Zeile gelöscht wird, wo fährt die Schleife weiter?
Wieder Zeile 11 oder Zeile 12
Sub schleife_1()
   Dim wks_q As Worksheet
   Dim wks_imp As Worksheet
   Dim wks_tp As Worksheet
   Dim wks_ausw As Worksheet
   Dim lngLastRow As Long
   Dim lngC As Long
   
Application.ScreenUpdating = False
   
Set wks_tp = ThisWorkbook.Sheets("TagesPlan")
Set wks_imp = ThisWorkbook.Sheets("Import")
Set wks_ausw = ThisWorkbook.Sheets("Auswertung")
   
   With wks_tp
      lngLastRow = .Cells(.Rows.Count, 1).End(xlUp).Row
      For lngC = 11 To lngLastRow
        wks_imp.Cells(1, 7) = .Cells(lngC, 7).Value
        wks_imp.Cells(2, 7) = .Cells(lngC, 8).Value
        wks_ausw.Cells(2, 6) = .Cells(lngC, 1).Value
        wks_ausw.Cells(3, 6) = .Cells(lngC, 8).Value
' Call hier das Makro2, welches die erste Zeile in wks_tp (Sheet Tagesplan) löscht, aufgerufen
      Next lngC
   End With
   Application.ScreenUpdating = True
End Sub
Gruss
Fred

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Frage zu Schleife, Ablauf
24.01.2023 06:47:37
ralf_b
diese Frage kannst du dir ganz einfach mit dem schrittweisen Durchlaufen des Codes "selbst" beantworten. F8, F9(Haltepunkte), Direktfenster, Lokalfenster, solltest du kennen und nutzen.
Aber auch durch etwas Nachdenken kannst du das herausfinden.
an dem Platz (ZeilenNr) der gelöschten Zeile rutscht die ehemals nächste Zeile. Der Schleifenzähler zählt hoch, und nimmt die rechnerisch nächste Zeile. Also wird der hochgerutschte Zeileninhalt übersprungen. Die Schleife läuft aber weiter bis lngLastRow und überschreitet deinen kleiner gewordenen Datenbereich. Das kann zu Fehlern führen.
Kurz gesagt löscht man keine Zeilen in einer For-Schleife, die nicht rückwärts läuft.
Das wiederholte Löschen einzelner Zeilen ist zudem zeitaufwendig und sollte vermieden werden.
Anzeige
AW: Frage zu Schleife, Ablauf
24.01.2023 06:51:38
Fred
Hallo ralf_b,
danke für die Erklärung und die Tipps!!
Gruss
Fred
AW: Frage zu Schleife, Ablauf
24.01.2023 13:01:55
snb
Verwende VBA:
In Excel kann man keine Zeilen 'löschen'; das Anzahl 'Rows.count' ist invariant: 2^20
Sub M_schleife_1()
   sn= Sheets("TagesPlan").usedrange
   sp=Sheets("Import").usedrange
   sq=Sheets("Auswertung")
     
   For j= 11 To Ubound(sn)
     sp(1, 7) = .sn(j, 7)
     sp(2, 7) = .sn(j, 8)
     sp(2, 6) = .sn(j, 1)
     sq(3, 6) = .sn(j,8)
   Next 
  End Sub  

AW: Frage zu Schleife, Ablauf
24.01.2023 17:30:14
ralf_b
vba nur mit Recorder!!! da ist dein kryptischer Minimalismus wenig hilfreich.

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige