Guten Tag ihr fleissigen Helfer, habe eine Tabelle mit Werte in Spalte B - D und eine Formel in Spalte D bis Zeile 5000. Mit einem Makro finde wird die Zeilennummerder letzten beschriebene Zeile angezeigt. Wie muss das Makro geändert werden, dass alle nachfogendZellen mit Formel gelöscht werden? für ihre Hilfe und Gruss Martin
ich habe einen anderen Ansatz für Dich zum Ausprobieren. Bei Deiner Beispieltabelle hat es funktioniert:
Code:
Sub Letzte_Zeile_mit_Wert_finden_Test() Dim lrow As Long Dim lrowVisible As Long Dim k As Long
lrow = Tabelle1.UsedRange.SpecialCells(xlCellTypeLastCell).Row lrowVisible = Tabelle1.Application.WorksheetFunction.CountIf(Range("E2:E" & lrow), ">0") k = lrowVisible + 1 Set Bereich = Tabelle1.Range(Cells(k, 1), Cells(lrow, 5)) Bereich.ClearContents End Sub
Du kannst dir Range alternativ auf eine andere Spalte angleichen. In meinem Beispiel habe ich die Spalte "E" eingesetzt um die letzte Zelle mit einer Zahl zu finden. Wenn Du auch negative Ergebnisse in Spalte "E" erwartest, musst Du entsprechend anpassen. Achtung: es werden alle Werte und Formeln unterhalb der letzten beschriebenen Zelle gelöscht!
Guten Abend Norbert, danke für das funktionierende Makro. Leider sucht es nur in Spalte "E" die letzte Zeile. Ich möchte aber, dass in den Spalten "B" bis "D" gesucht wird, welches die letzte Zeile ist und dann den Rest bis Zeile 5000 löschen. Also nur die überflüssigen Formeln in Spalte "E". Wäre froh, wenn du mir das Makro anpassen würdest. Danke für die Hilfsbereitshaft. Gruss Martin
Sub Letzte_Zeile_mit_Wert_finden() Dim LetzteInhaltZeile As Long Dim lrow As Long Dim Bereich As Range
With ActiveSheet.Range("B:D") 'Anpassen LetzteInhaltZeile = .Find(What:="*", _ After:=.Cells(1), _ LookIn:=xlValues, _ LookAt:=xlWhole, _ SearchOrder:=xlByRows, _ SearchDirection:=xlPrevious, _ MatchCase:=False).Row End With 'MsgBox LetzteInhaltZeile + 1 With Tabelle1 lrow = .UsedRange.SpecialCells(xlCellTypeLastCell).Row Set Bereich = .Range(.Cells(LetzteInhaltZeile + 1, 5), .Cells(lrow, 5)) End With Bereich.ClearContents End Sub
noch eine Alternative, - so sollte es auch gehen. Habe es getestet:
Code:
Sub Letzte_Zeile_mit_Wert_finden_Test1() Dim lrow As Long Dim lrowVisibleB As Long Dim lrowVisibleC As Long Dim lrowVisibleD As Long Dim k As Long Dim Bereich As Range
22.10.2021, 12:57 (Dieser Beitrag wurde zuletzt bearbeitet: 22.10.2021, 13:08 von luna101.)
Guten Tag Norbert, für das Makro. Funktioniert bestens. Nun habe ich sogar 2 verschiedene Makro. Das ist Gruss Martin Guten Tag Ralf_b, für das Makro. Funktioniert bestens. Nun habe ich sogar 2 verschiedene Makro. Das ist Gruss Martin
Guten Abend Norbert und Ralf habe mal versucht, beide Makro in meine neue Tabelle einzufügen. Etwas habe ich falsch gemacht. Erhalte bei beiden eine Fehlermeldung.
lrow = .UsedRange.SpecialCells(xlCellTypeLastCell).Row oder lrowVisibleB = Datum_ändern.Cells(Rows.Count, 28).End(xlUp).Row
Ich kriege es nicht gebacken . Bitte um eure Hilfe. Gruss Martin
k = Application.WorksheetFunction.Max(lrowVisibleB, lrowVisibleC, lrowVisibleD) + 1 .Range(Cells(k, 30), Cells(lrow, 30)).ClearContents End With End Sub
Beide Namen kannst du im VBA Editor sehen, da werden sie angezeigt.