ich hoffe es kann mir jemand helfen, denn ich werde langsam wahnsinnig.
Das einzige, was ich versuche zu schaffen, ist die letzt (unterste) Zeile einer "intelligenten" Tabelle zu löschen.
Dazu muss ich zunächst die letzte Zeile auswählen und es ist nirgendwo beschrieben, wie das geht. Ich habe sehr viel recherchiert und nichts Passendes gefunden.
Bisher habe ich mein Problem so gelöst:
Sub LöschUnten3()
'Es wird die Zelle unterhalb der Tabelle Stahl 1 ermittelt und ausgewählt.
Dim c As Range
Dim firstAddress
Dim str
Dim Bereich As Range
Dim start As Double
str = "Stahl 1"
With ActiveSheet.Cells
Set c = .Find(str, LookIn:=xlValues)
If c Like str Then Set Bereich = c
If Not c Is Nothing Then
firstAddress = c.Address
Do
Set c = .FindNext(c)
If c Like str Then Set Bereich = Union(c, Bereich)
Loop While Not c Is Nothing And c.Address firstAddress
End If
End With
Bereich.Select
Debug.Print Timer - start
ActiveCell.Offset(1, 0).Select
'Nach der Ermittlung der Zelle unterhalb von Stahl 1 wird der Sprung zur letzten Zelle gemacht.
'Die letzte Zeile wird anschließend gelöscht.
Selection.Cells.Offset(Range("Tabelle12").Rows.Count - 1, 0).Delete
End Sub
Auf diese Weise klappt mein Vorhaben. Nun kommt jedoch ein Problem!Ich muss den Bezug "Tabelle12" in der letzten Zeile wegbekommen und den Code somit quasi allgemein halten.
Mein Ansatz war bisher folgender:
Ich lösche die letzte Zeile und mache bei "ActiveCell.Offset(1, 0).Select" also weiter.
Zunächst habe ich geschrieben:
Selection.CurrentArea.Select
Und hier scheitert es bereits, denn es wird nicht die gesamte Tabelle12 ausgewählt, sondern nur der Bereich der Tabelle12, in dem etwas eingetragen ist - die letzten 3 LEEREN Zeilen werden also nicht erfasst.
Das selbe Problem mit End(xldown). Die Markierung stoppt an der letzten beschriebenen Zeile. Die restlichen leeren Zeilen werden nicht erfasst.
Bitte um Hilfe!