Also, meine Funktion sucht im ganzen aktiven Arbeitsblatt nach dem Eintrag "Veränderungen Konto im VZ". Um den Bereich einzugrenzen müsste nun noch nach einem Schlüsselwort für das Ende des Bereiches gesucht werden. "Bereich Ende" musst du natürlich ersetzen.
For C = 1 To LC
For R = 1 To LR
If AV(R, C) = "Veränderungen Konto im VZ" Then
y = R + 1
ElseIf AV(R, C) = "Bereich Ende" Then
LR = R - 1
Exit For
End If
Next
Next
Die Funktion könnte aber schneller laufen wenn du nur in der richtigen Spalte suchst:
C =suchspalte als zahl
For R = 1 To LR
If AV(R, C) = "Veränderungen Konto im VZ" Then
y = R + 1
ElseIf AV(R, C) = "Bereich Ende" Then
LR = R - 1
Exit For
End If
Next
Hier nochmal die ganze Funktion, mir ist noch ein Fehler beim Zeilen löschen aufgefallen. Außerdem kannst du mit "set Sh" das Arbeitsblatt ändern:
Sub ZeileDelVeränderungen()
Dim y&, R&, C%, LR&, LC%, TV&, AV, E1&, E2&, rng As Range, Sh As Object
Set Sh = ActiveSheet
'letzte benutzte Zeile und Spalte finden
E1 = Rows.Count
E2 = Columns.Count
With Sh
For C = 1 To E2
TV = .Cells(E1, C).End(xlUp).Row
If TV > LR Then LR = TV
Next
For R = 1 To LR
TV = .Cells(R, E2).End(xlToLeft).Column
If TV > LC Then LC = TV
Next
Set rng = .Range(.Cells(1, 1), .Cells(LR, LC))
AV = rng.Value
End With
'Bereich suchen
For C = 1 To LC
For R = 1 To LR
If AV(R, C) = "Veränderungen Konto im VZ" Then
y = R + 1
ElseIf AV(R, C) = "Bereich ende" Then
LR = R - 1
Exit For
End If
Next
Next
If y = 0 Then Exit Sub
'Zeilen löschen
Application.ScreenUpdating = False
For R = LR To y Step -1
If AV(R, 5) & AV(R, 7) = "" Then
Sh.Rows(R).Delete
End If
Next
Application.ScreenUpdating = True
End Sub
|