Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1496to1500
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
Zeilen löschen von bis
11.06.2016 17:28:01
bis
Hallo
Stehe vor folgendem Problem, bei dem ich nicht mehr weiterkomme. Habe zwei Tabellenblätter, bei denen ich ab der Zeile 5 bis Ende des Bereichs1 die Zeilen löschen will. Der Bereich1 ist in den Tabellenblättern unterschiedlich. Makro funktioniert soweit, möchte jedoch den Befehl "Select" nicht benötigen. Kann mir da jemand weiterhelfen?
Gruss
Peter
Userbild
https://www.herber.de/bbs/user/106163.xlsm

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

Betreff
Datum
Anwender
Anzeige
AW: Zeilen löschen von bis
11.06.2016 17:32:14
bis
ein Bild ist Klasse, das kann man nicht in Excel übernehmen.
Sub Bereich1_Loeschen()
Dim lZeile
Set wks_1 = ThisWorkbook.Worksheets("Tabelle1")
Set wks_2 = ThisWorkbook.Worksheets("Tabelle2")
With wks_1
For lr = 5 To .Cells(.Rows.Count, 1).End(xlUp).Row + 1
If .Cells(lr, 1) = "" Then
.Range(.Rows(5), .Rows(lr - 1)).EntireRow.Delete
Exit For
End If
Next
End With
With wks_2
For lr = 5 To .Cells(.Rows.Count, 1).End(xlUp).Row + 1
If .Cells(lr, 1) = "" Then
.Range(.Rows(5), .Rows(lr - 1)).EntireRow.Delete
Exit For
End If
Next
End With
End Sub

Anzeige
AW: Zeilen löschen von bis
11.06.2016 18:04:23
bis
Hi
das Selektieren des Tabellenblatts kannst du dir sparen, wenn du vor jedes Cells, Range, Rows und Columns immer das jeweilige Tabellenblatt davor schreibst:
for lr = wks_1.Cells(wks_1.Rows.count, 1).end(xlup).Row + 1
if wks_1.Cells(lr, 1) = "" Then

naja, und so weiter halt
da das viel schreibarbeit werden kann, kann man die WITH-Klammer verwenden, um nicht jedesmal das ganze Tabellenblatt hinschreiben zu müssen.
Wie das geht, hat Hajo ja gezeigt.
du kannst dir aber die Schleife sparen, in dem du das .END(xlDown) auch für die Ermittlung des zu löschenden Zellbereichs verwendest:
With wks_1
If .Cells(6, 1) = "" then
.Rows(5).Delete
Else
.Range(.Cells(5, 1), .Cells(5, 1).end(xldown)).EntireRow.Delete
End IF
end With 
mach lieber eine Schleife über die beiden Tabellenblätter, damit du das Löschen nicht doppelt programmieren musst:
Sub Bereich1_Loeschen()
Dim wks
For Each wks In Array("Tabelle1", "Tabelle2")
With ThisWorkbook.Worksheets(wks)
If .Cells(5, 1)  "" Then
If .Cells(6, 1) = "" Then
.Rows(5).Delete
Else
.Range(.Cells(5, 1), .Cells(5, 1).End(xlDown)).EntireRow.Delete
End If
End If
End With
Next
End Sub  
Gruß Daniel

Anzeige
AW: Zeilen löschen von bis
11.06.2016 18:18:30
bis
Hallo zusammen
Vielen Dank für die Antwort, alle Vorschläge führen zum Ziel, herzlichen Dank.
Gruss
Peter

252 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige