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

Zeilen aus Liste unter Bedingung Ausschneiden

Zeilen aus Liste unter Bedingung Ausschneiden
20.08.2015 09:52:42
Adrian
Hallo liebe Community,
ich brauche mal wieder eure Hilfe :-)
Und zwar möchte ich, wie im Titel bereits angedeutet, eine Zeile, die Grau hinterlegt ist aus der vorhandenen Tabelle ausschneiden, die daraus resultierende leere Zeile löschen, und den Ausschnitt unter der Tabelle mit einem Offset wieder einfügen...
Mein Ansatz dazu:

Dim LZ2 As Long, ZeileD As Long, ZeileU As Long, sh1 As Worksheet, sh2 As Worksheet
Set sh2 = GetObject("P:\QUALITY\CABCARGOQUALITY\040_QECM\080_KSI Mod efficiency\EC_KSI_RFT_CR   _
_
Master List.xlsx").Sheets(1) 'Verzeichnis MASTERLIST (ZIEL)
LZ2 = IIf(IsEmpty(sh2.Cells(sh2.Rows.Count, 1)), sh2.Cells(sh2.Rows.Count, 1).End(xlUp).Row,  _
sh2.Rows.Count) 'Zielbereich
For ZeileU = 2 To LZ2
If sh2.Cells(ZeileU, 2).Interior.ColorIndex = 16 Then                sh2.Range("A2"). _
End(xlDown).Offset(6, 0).EntireRow.Insert 'zeile einfügen
sh2.Cells(ZeileU, 1).EntireRow.Cut sh2.Range("A2").End(xlDown).Offset(6)
End If
Next ZeileU

der Code wird zwar ohne Beanstandung seitens Excell ausgeführt, transportiert aber nur einen Eintrag nach unten und baut (gefühlt willkürlich) in der Tabelle neue Zeilen ein...
Bin für jeden Tip dankbar!!

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Zeilen aus Liste unter Bedingung Ausschneiden
25.08.2015 17:02:38
Matthias
Hallo Adrian,
dein Fehler liegt in der Zeile des Offsets. Du musst dir über die Funktion von .End(xlDown) im Klaren sein. Sobald eine Leerzeile auftritt ist das Ende des Befehls erreicht. Sprich, solange deine Tabelle noch ein vollständiger Block ist, zählt er auch bis ihrem tatsächlichen Ende. Nach dem ersten .Cut jedoch haut das nicht mehr hin, von dieser Leerzeile aus geht er dann das Offset nach unten.
Ergo:
1. Treffer wird richtig verschoben.
2. Treffer wird von der entstandenen Leerzeile 6 Zeilen unterhalb eingefügt.
3. genau wie 2. Treffer, Treffer 2 rutscht dadurch eins nach unten.
...
Da ich nicht genau weis nach welchem Muster du deine Zeile eingefügt haben will, kann ich nur raten. Den jeweiligen .Cut / .Insert musst du dann noch ranhängen.
Alle Zeilen mit dem Offset 6 zum Tabellenende untereinander einfügen:
Das Tabellenende kennst du ja (LZ2)...
sh2.Cells(LZ2, 1).Offset(6,0)
Zwischen jeder eingefügten Zeile das Offset 6:
letzte Zeile bei jedem Durchgang neu bestimmen...
letzteZeile = sh2.Cells(sh2.Rows.Count, 1).End(xlUp).Row
sh2.Cells(letzteZeile, 1).Offset(6,0)

Bei Variante 1 werden die Werte in umgekehrter Reihenfolge angelegt, weil die wie oben beschrieben ein Eintrag den vorhergehenden nach unten rutscht. Wenn ich gemein wär, würd ich dich selber basteln lassen, aber ich bin heut guter Laune. Lass deine Schleife rückwärts durchlaufen:
 For ZeileU = LZ2 To 2 Step -1
lg Matthias

Anzeige
AW: Zeilen aus Liste unter Bedingung Ausschneiden
25.08.2015 18:07:31
Matthias
Was passiert wenn man der Aufgabe nicht genausoviel Aufmerksamkeit schenkt wie dem Code selbst? Genau, man hat mehr Arbeit als nötig (gilt für uns beide).
"[...]die daraus resultierende leere Zeile löschen[...]"
Dann funktioniert auch dein Code. Das ist mir allerdings erst klar geworden als ich schon im Auto saß :)
lg Matthias

AW: Zeilen aus Liste unter Bedingung Ausschneiden
26.08.2015 12:55:36
Adrian
Super sache, vielen Dank dir!! :)

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige