Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1572to1576
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 löschen u. in erste leere Zeile schreiben

Zeilen löschen u. in erste leere Zeile schreiben
18.08.2017 10:13:50
FelixZ
Guten Morgen alle Zusammen,
bei folgendem Problem könnte ich die kompetente Hilfe des Forums gebrauchen :)
Ich habe ein Makro welches abgleicht ob bestimmte Zellinhalte bereits in einem Sheet vorhanden sind und falls ja, dann die entsprechenden Zeilen löscht.
Anschließend werden Werte kopiert und sollen ab der ersten leeren Zeile eingefügt werden.
Mein Makro löscht zwar die entsprechenden Zeilen, fügt aber die neuen Werte nicht ab der ersten leeren Zeile ein, sondern nach der Zeile wo die gelöschten Werte ursprünglich waren. So zu sagen ignoriert mein RowCount die neuen leeren Zeilen.
Anbei mein Makroversuch und eine Testdatei.
Die Datei hat eigentlich mehr Funktionen, aber mir geht es wirklich nur um dieses triviale aber nervige Problem.
Schon mal vielen Dank im Voraus für die Unterstützung!
Viele Grüße
Felix
https://www.herber.de/bbs/user/115553.xlsm
Private leereZeile As Integer, i As Integer
Sub Projekt_öffnen_1()
leereZeile = Sheets("DataPool").Cells(Rows.Count, 1).End(xlUp).Row + 1
Application.DisplayAlerts = False
Range("E2") = Date
For i = 200 To 2 Step -1
If Cells(2, 1).Value = Sheets("DataPool").Cells(i, 1).Value Then
Sheets("DataPool").Select
Range(Cells(i, 1), Cells(i, 17)).Clear
Range(Cells(i, 1), Cells(i, 17)).Delete shift:=xlUp
'Auch wenn ich die Zeilen so lösche, wird der neue Inhalt nicht in die erste leere Zeile   _
_
kopiert
'Cells(i, 1).EntireRow.Delete
End If
Next i
Sheets("DP_Sources").Select
Range("A20:Q32").Select
Selection.Copy
Sheets("DataPool").Cells(leereZeile, 1).PasteSpecial xlValues
Application.DisplayAlerts = True
End 

Sub


		

1
Beitrag zum Forumthread
Beitrag zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Kraut und Rüben...
18.08.2017 13:43:17
Michael
Felix,
...hilft beim Skripten nicht wirklich. Siehe mein überarbeiteter Code inkl. Kommentare, Deine Mappe habe ich mir nicht angesehen:
Sub Projekt_öffnen_1()
Dim Wb As Workbook: Set Wb = ThisWorkbook
Dim WsQuelle As Worksheet: Set WsQuelle = Wb.Worksheets("DP_Sources")
Dim WsZiel As Worksheet: Set WsZiel = Wb.Worksheets("DataPool")
Dim leereZeile As Integer, i As Integer
With Application
.DisplayAlerts = False '? Warum in diesem Makro ?
.ScreenUpdating = False 'Schadet bei Blatt-Operationen (zB Zeilen-Löschen...) nie
End With
'Range("E2") = Date '? Zelle E2 von welchem Blatt ? Exakt Referenzieren!
'Annahme Zelle E2 auf Blatt "DataPool", daher
WsZiel.Range("E2") = Date 'Bzgl. WsZiel siehe Deklarationen oben
For i = 200 To 2 Step -1
'Zuweisung der nächsten leeren Zeile muss je Schleifendurchlauf ergänzt werden,
'nicht nur einmal außerhalb, sonst ändert sich der Wert ja nicht entsprechend...
leereZeile = WsZiel.Cells(WsZiel.Rows.Count, 1).End(xlUp).Row + 1
'Achtung: Auch hier wieder mangelhafte Referenzierung:
'--> If Cells(2, 1).Value - Also Zelle "A2" von welchem Blatt?
'Annahme Blatt "DataPool", daher
If WsZiel.Range("A2") = WsZiel.Cells(i, 1) Then
'Sheets("DataPool").Select ' Völlig unnötig, wenn Du ordentlich referenzierst!
With WsZiel
'? Warum...
'Range(Cells(i, 1), Cells(i, 17)).Clear
'Range(Cells(i, 1), Cells(i, 17)).Delete shift:=xlUp
'...Zuerst Zeilen-Inhalte löschen, wenn danach die ganze Zeile gelöscht wird?
'Daher:
.Range(.Cells(i, 1), .Cells(i, 17)).Delete shift:=xlUp
End With
WsQuelle.Range("A20:Q32").Copy
WsZiel.Cells(leereZeile, 1).PasteSpecial xlPasteValues
End If
Next i
Application.DisplayAlerts = True
Set Wb = Nothing: Set WsQuelle = Nothing: Set WsZiel = Nothing
End Sub
LG
Michael
Anzeige

314 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige