schneller, so gehts.
08.04.2009 13:56:08
Tino
Hallo,
habe mal etwas gebastelt, so müsste der Code schneller sein,
zumindest wird es kaum schneller gehen.
Sub TestLoescheZeilen()
Dim LRow
Dim Bereich As Range, Bereich1 As Range
Dim myTab As Worksheet
Dim iCalc As Integer
Set myTab = Worksheets("Tabelle1") 'Name anpassen
With Application
.ScreenUpdating = False
iCalc = .Calculation
.Calculation = xlCalculationManual
LRow = myTab.Range("A:B").Find("*", , xlValues, 2, 1, 2, False, False, False).Row
Set Bereich1 = myTab.Range("A1:A" & LRow).Offset(0, Columns.Count - 2)
Bereich1.FormulaR1C1 = "=ROW()"
Set Bereich = myTab.Range("A1:B" & LRow)
myTab.UsedRange.Sort Bereich(1, 1), xlAscending, Bereich(1, 2), , xlAscending, , , xlYes
Set Bereich = myTab.Range("A1:A" & LRow).Offset(0, Columns.Count - 1)
Bereich.FormulaR1C1 = "=IF(AND(RC1=R[1]C1,RC2<=R[1]C2),True,ROW())"
myTab.UsedRange.Sort Bereich1(1), xlAscending, , , , , , xlYes
If .WorksheetFunction.CountIf(Bereich, True) > 0 Then
Bereich.SpecialCells(xlCellTypeFormulas, 4).EntireRow.Delete
End If
myTab.UsedRange.Sort Bereich.Offset(0, -1)(1), xlAscending, , , , , , xlYes
myTab.Columns(myTab.Columns.Count).Delete
myTab.Columns(myTab.Columns.Count - 1).Delete
.Calculation = iCalc
.ScreenUpdating = True
End With
End Sub
Gruß Tino