Forums Neueste Beiträge
 

Makro gefilterte Zeilen löschen

09/05/2014 - 18:44 von Ralf Gläßer | Report spam
Hallo

Sachverhalt:
excel2003
Tabelle mit folgendem Aufbau:
1. Zeile Überschrift
2. Zeile leer
3. Zeile leer
4. Zeile Spaltenüberschriften
ab 5. Zeile Daten

Es sollen alle Zeilen gelöscht werden, die in Spalte 1
(Löschmarkierungsspalte) ein "x" haben bzw. nicht leer sind.

Ich habe es folgendermaßen probiert:

Set ReLi = ActiveSheet
With ReLi.Cells
.AutoFilter Field:=1, Criteria1:="<>"
.Cells(1).CurrentRegion.Offset(1).EntireRow.Delete
.AutoFilter
End With

Damit werden zwar im Filter nur noch die Zeilen mit "x" angezeigt, aber
gelöscht wird nur die 2. Zeile und nicht die gefilterten
Wenn ich Zeile 2 und 3 was reinschreibe dann scheint es zu
funktionieren, nur nicht wenn die leer sind. Die sollen aber leer sein.

Wo habe ich hier einen Denkfehler?
Bitte kann mir jemand ein Makro machen, wo das wie gewollt funktioniert?

Danke
Ralf
 

Lesen sie die antworten

#1 Claus Busch
09/05/2014 - 19:00 | Warnen spam
Hallo Ralf,

Am Fri, 09 May 2014 18:44:21 +0200 schrieb Ralf Glàßer:

Es sollen alle Zeilen gelöscht werden, die in Spalte 1
(Löschmarkierungsspalte) ein "x" haben bzw. nicht leer sind.



das Offset ist nur für eine Zeile. Lösche doch den ganzen sichtbaren
Bereich auf einen Rutsch.
Da ich nicht weiß über welchen Bereich deine Tabelle geht, habe ich mal
die letzte Zeile und Spalte ausrechnen lassen. Das kannst du für dich
dann àndern:

Sub Loeschen()
Dim LRow As Long
Dim LCol As Long

Application.DisplayAlerts = False
With ActiveSheet
LRow = .Cells(Rows.Count, 1).End(xlUp).Row
LCol = .Cells(4, Columns.Count).End(xlToLeft).Column
.Range(.Cells(4, 1), .Cells(LRow, LCol)).AutoFilter Field:=1,
Criteria1:="<>"
.Range(.Cells(5, 1), .Cells(LRow, LCol)).Delete
.AutoFilterMode = False
End With
Application.DisplayAlerts = True
End Sub


Mit freundlichen Grüßen
Claus
Vista Ultimate / Windows7
Office 2007 Ultimate / 2010 Professional

Ähnliche fragen