AW: Löschen jeder n-ten Zeile
04.11.2016 10:44:06
Tino
Hallo,
ich habe es mal so versucht.
Modul Modul1
Option Explicit
Sub Loeschen()
Dim rng As Range
Dim ArTemp, varValue
Dim nCounter&, n&, booLoeschen As Boolean
Const LoescheAbZeile& = 60
Const LoscheAnzahlZeilen& = 5
'Spalte wo Daten enthalten sind für Prüfung ob leer
Const RefSpalteDaten& = 1
'Tabelle anpassen
With Tabelle1
'Range ab A7 bis letzte
Set rng = .Range("A7", .Cells(.Rows.Count, RefSpalteDaten).End(xlUp)).EntireRow
'Daten ab A7 vorhanden?
If rng.Rows(1).Row < 7 Then Exit Sub 'keine Daten
'Daten in Array
ArTemp = rng.Columns(RefSpalteDaten).Value2
'Schleife
For n = Lbound(ArTemp) To Ubound(ArTemp)
varValue = CStr(ArTemp(n, 1)) 'Zwischenablage
ArTemp(n, 1) = n 'Zähler für Sortierung
If varValue <> "" Then 'Daten enthalten
nCounter = nCounter + 1 'Zähler
If n >= LoescheAbZeile Then
If nCounter Mod LoescheAbZeile <= LoscheAnzahlZeilen Then 'Zeile 60 bis 65?
ArTemp(n, 1) = True 'Löschen?
booLoeschen = True
End If
End If
End If
Next n
If booLoeschen Then
With rng
'Daten in letzte Spalte
.Columns(.Columns.Count).Value = ArTemp
'Sortieren
.Sort key1:=.Cells(1, .Columns.Count), Order1:=xlAscending, Header:=xlNo
'Zeile mit Wahrheitswert löschen
.SpecialCells(xlCellTypeConstants, 4).EntireRow.Delete
'Hilfsspalte löschen
.Columns(.Columns.Count).EntireColumn.Delete
End With
End If
End With
End Sub
Gruß Tino