Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1684to1688
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

For each Next 2x

For each Next 2x
16.04.2019 12:43:53
JoNNy
Hallo zusammen,
ganz kleines Thema.
Ich hab einen For each Next Aufbau:

For Each Zelle In Bereich
If Not Zelle.Value = IniWert Then
IniWert = Zelle.Value
Zelle.EntireRow.Insert Shift:=xlDown
Zelle.EntireRow.Insert Shift:=xlDown
End If
Next

Problem an der Geschichte ist, dass durch das Einfügen alles nach unten rutscht.
Daraus folgt dann das die Abfrage eine leere Zelle prüft, die dann natürlich nicht gleich dem IniWert ist.
Gibt es also eine Möglichkeit in diesem Fall dann ein doppeltes Next zu verwenden wenn die If-Abfrage True wird?
Also quasi so:

For Each Zelle In Bereich
If Not Zelle.Value = IniWert Then
IniWert = Zelle.Value
Zelle.EntireRow.Insert Shift:=xlDown
Zelle.EntireRow.Insert Shift:=xlDown
'' Hier dann den doppelten Next Befehl
End If
Next

Gruß JoNNy

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: For each Next 2x
16.04.2019 12:53:27
Daniel
Hi
nö geht nicht.
Die For-Each-Schleife läuft in vorgegebene Reihenfolge von Objekt zu Objekt.
in dem Fall wäre es besser, du verwendest den Index und läufst rückwärts durch die Zellen, dh von höchster zur niedrigster Zeilennummer.
Hat den Vorteil, dass die Zeilen, die du einfügst, in dem Bereich eingefügt werden, den du schon durchlaufen hast und dich so nicht weiter stören.
bei größeren Datenmengen würde ich die aufgabe noch ganz anders lösen:
1. in einer Hilfsspalte die Zeilennummer einfügen: =Zeile()

2. in einer zweiten Hilfsspalte die Zeilennummer einfügen, wenn nach dieser Zeile die Leerzeilen eingefügt werden sollen: (formel für Zeile1: =Wenn(A1A2;Zeile();"")
3. beide Hilfsspalten bis zum ende der Tabelle runter ziehen
4. die zweite Hilfsspalte kopieren und 2x als Wert unterhalb der der ersten Hilfsspalte einfügen
5. das ganze nach der ersten Hilfsspalte sortieren
6. Hilfsspalten löschen.
Gruß Daniel
Anzeige
AW: For each Next 2x
16.04.2019 13:15:00
Martin
Hallo JoNNy,
das Ganze solltest du in eine rekursive Prozedur auslagern, die sich beim Erfüllen der Bedingung bzw. Einfügen der Zeile selbst aufruft (gefolgt von einem "Exit For") und dabei die Variable "Bereich" mit dem verbleidenden Bereich neu festlegt.
Viele Grüße
Martin
AW: For each Next 2x
16.04.2019 14:03:20
JoNNy
Hallo Martin,
die Idee hört sich gut an, aber wie genau meinst du das mit dem "Exit for"?
Gruß JoNNy
AW: For each Next 2x
16.04.2019 15:23:20
Werner
Hallo,
und was hat dir jetzt an Daniels Vorschlag, den Bereich von unten nach oben zu durchlaufen, nicht gefallen?
Blattname und Spalte mußt du anpassen. Die Schleife läuft vom letzten Eintrag in Spalte B bis Zeile 2
Public Sub aaa()
Dim i As Long, loLetzte As Long, raBereich As Range
Dim IniWert As Long
IniWert = 2
With Worksheets("Tabelle1")
loLetzte = .Cells(.Rows.Count, 2).End(xlUp).Row
For i = loLetzte To 2 Step -1
If .Cells(i, 2)  IniWert Then
IniWert = .Cells(i, 2)
Rows(i).Resize(2).Insert
End If
Next i
End With
End Sub
Gruß Werner
Anzeige
AW: For each Next 2x
16.04.2019 15:22:44
JoNNy
Hi zusammen,
ich hab das Problem dank Martins Gedankenanstoß jetzt relativ simpel, aber doch anders gelöst:

For Each Zelle In Bereich
If Skip = False Then
If Not Zelle.Value = IniWert Then
IniWert = Zelle.Value
Zelle.EntireRow.Insert Shift:=xlDown
Zelle.EntireRow.Insert Shift:=xlDown
Skip = True
End If
Else
Skip = False
End If
Next
Gruß JoNNy

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige