Live-Forum - Die aktuellen Beiträge
Datum
Titel
24.04.2024 19:29:30
24.04.2024 18:49:56
Anzeige
Archiv - Navigation
1520to1524
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

VBA -MSG- Finde letzte Zeile und Lösche nach oben

VBA -MSG- Finde letzte Zeile und Lösche nach oben
23.10.2016 10:07:43
Leon
Hallo,
habe hier im Forum eine interessante Funktion gefunden- sehr brauchbar. Hatte Christan mal entworfen.
Damit wir die letzte beschriebene Zelle gefunden. Das Funktioniert sehr gut.
Ist es möglich, diese FunKtion etwas abzuändern?
* Beim finden der letzten Zeile auch dort hin springen.
* In der MSG Box eine weitere Funktion einzubinden- mit: Befehlsschaltfläche Löschen, die dann folgendes löschen wird-
- Löschen der Letzten Zeile plus 10 weitere nach oben ( z.B. wenn bei 50 die letzte war- dann bis 40 löschen, oder bei 477- dann bis 467 löschen.
  • 
    Function LastCol(wks As Worksheet) As Long
    Dim lngFirst As Long, lngLast As Long, lngTmp As Long
    With Application
    If .CountA(wks.Cells) = 0 Then Exit Function
    If .CountA(wks.Columns(wks.Columns.Count)) Then
    LastCol = wks.Columns.Count: Exit Function
    End If
    lngLast = wks.Columns.Count
    Do While lngLast > lngFirst + 1
    lngTmp = (lngFirst + lngLast) \ 2
    If .CountA(wks.Columns(lngTmp).Resize(, lngLast - lngTmp)) Then _
    lngFirst = lngTmp Else lngLast = lngTmp
    Loop
    If .CountA(wks.Columns(lngLast)) Then LastCol = lngLast Else LastCol = lngFirst
    End With
    End Function
    


  • Oder wird das gar nichts?
    Eine fertige Funktion wäre mir lieb.
    Danke für Eure Hilfe.
    MfG Leon

    4
    Beiträge zum Forumthread
    Beiträge zu diesem Forumthread

    Betreff
    Datum
    Anwender
    Anzeige
    AW: VBA -MSG- Finde letzte Zeile und Lösche nach oben
    23.10.2016 21:39:41
    fcs
    Hallo Leon,
    die von dir gefundene Funktion ermittelt die Letzte Spalte.
    Du suchst aber nach Zeilen.
    Nachfolgend eine Variante, die im aktiven Tabellenblatt, nach der letzte Zeile mit Inhalt &lt&gt"" sucht und zum Löschen der letzten 10 Zeilen auffordert.
    LG
    Franz
    Sub prcLoeschenLetzte_10_Zeilen()
    Call prcLoeschenLetze(Anzahl_Loeschen:=10, bolFormeln:=True, bolUsedRange:=False)
    End Sub
    Sub prcLoeschenLetze(Optional ByVal Anzahl_Loeschen As Long = 1, _
    Optional ByVal bolFormeln As Boolean = True, _
    Optional ByVal bolUsedRange As Boolean = False)
    Dim wks As Worksheet
    Dim Zelle As Range
    Dim Zeile As Long
    Set wks = ActiveSheet
    With wks
    Zeile = fncLastRow(wks, bolFormeln, bolUsedRange)
    If Zeile = 0 Then
    MsgBox "Es gibt keine Daten im Tabellenblatt"
    Else
    Set Zelle = .Cells(Zeile, 1)
    Zelle.Select
    If Zeile  0 Then
    .Range(.Rows(Zeile - Anzahl_Loeschen + 1), .Rows(Zeile)).Delete
    .Cells(Zeile - Anzahl_Loeschen, 1).Select
    End If
    End If
    End If
    End If
    End With
    End Sub
    Public Function fncLastRow(wks As Worksheet, _
    Optional ByVal bolFormeln As Boolean = True, _
    Optional ByVal bolUsedRange As Boolean = False) As Long
    'bolFormeln: True - Letzte Zeile mit Inhalt (inkl. Formeln) wird ermittelt _
    False - Letzte Zeile mit Inhalt  "" wird ermittelt.
    'bolUsedRange: True - Letzte benutzte Zeile (inkl. Formate) wird ermittelt _
    False - Letzte Zeile  gemäß Einstellung für bolFormeln wird ermittelt.
    Dim Zelle As Range
    With wks
    If bolUsedRange = True Then
    'letzte benutzte Zeile wird ermittelt - schließt formatierte Zellen mit ein
    With .UsedRange
    fncLastRow = .Row + .Rows.Count - 1
    End With
    Else
    Set Zelle = .Cells.Find(What:="*", After:=.Cells(1, 1), _
    LookIn:=IIf(bolFormeln = True, xlFormulas, xlValues), _
    lookat:=xlWhole, searchorder:=xlByRows, searchdirection:=xlPrevious)
    If Zelle Is Nothing Then
    fncLastRow = 0
    Else
    fncLastRow = Zelle.Row
    End If
    End If
    End With
    End Function
    

    Anzeige
    AW: VBA -MSG- Finde letzte Zeile und Lösche nach
    23.10.2016 22:26:27
    Andi
    Guten Abend Franz,
    herzlichen Dank- für die Mühe die Du dir gemacht hast- funktioniert tadellos.
    Eine Frage hätte ich noch dazu.
    Können auch in diesem Bereich vorhandene Bilddatein- wie z.B. zwei eingebettete BMP, JPG Dateien entfernt werden? Es kommt doch ab und zu vor, das dort sich welche befinden.
    Wenn nicht werden sie von Hand entfernt.
    Also nochmals recht vielen Dank- Respekt.
    LG Leon
    AW: VBA -MSG- Finde letzte Zeile und Lösche nach
    23.10.2016 23:43:47
    fcs
    Hallo Leon,
    mit den folgenden Anpassung werden optional auch die Grafiken/Formen etc. gelöscht
    LG
    Franz
    Sub prcLoeschenLetzte_10_Zeilen()
    Call prcLoeschenLetze(Anzahl_Loeschen:=10, bolFormeln:=True, bolUsedRange:=False, _
    bolShapes:=True)
    End Sub
    Sub prcLoeschenLetze(Optional ByVal Anzahl_Loeschen As Long = 1, _
    Optional ByVal bolFormeln As Boolean = True, _
    Optional ByVal bolUsedRange As Boolean = False, _
    Optional ByVal bolShapes = True)
    Dim wks As Worksheet
    Dim Zelle As Range
    Dim Zeile As Long
    Dim objShape As Shape
    Set wks = ActiveSheet
    With wks
    Zeile = fncLastRow(wks, bolFormeln, bolUsedRange)
    If Zeile = 0 Then
    MsgBox "Es gibt keine Daten im Tabellenblatt"
    Else
    Set Zelle = .Cells(Zeile, 1)
    Zelle.Select
    If Zeile  0 Then
    If bolShapes = True Then
    For Each objShape In .Shapes
    If Not Application.Intersect(objShape.TopLeftCell, _
    .Range(.Rows(Zeile - Anzahl_Loeschen + 1), _
    .Rows(Zeile))) Is Nothing Then
    objShape.Delete
    End If
    Next
    End If
    .Range(.Rows(Zeile - Anzahl_Loeschen + 1), .Rows(Zeile)).Delete
    .Cells(Zeile - Anzahl_Loeschen, 1).Select
    End If
    End If
    End If
    End If
    End With
    End Sub
    Public Function fncLastRow(wks As Worksheet, _
    Optional ByVal bolFormeln As Boolean = True, _
    Optional ByVal bolUsedRange As Boolean = False) As Long
    'bolFormeln: True - Letzte Zeile mit Inhalt (inkl. Formeln) wird ermittelt _
    False - Letzte Zeile mit Inhalt  "" wird ermittelt.
    'bolUsedRange: True - Letzte benutzte Zeile (inkl. Formate) wird ermittelt _
    False - Letzte Zeile  gemäß Einstellung für bolFormeln wird ermittelt.
    Dim Zelle As Range
    With wks
    If bolUsedRange = True Then
    'letzte benutzte Zeile wird ermittelt - schließt formatierte Zellen mit ein
    With .UsedRange
    fncLastRow = .Row + .Rows.Count - 1
    End With
    Else
    Set Zelle = .Cells.Find(What:="*", After:=.Cells(1, 1), _
    LookIn:=IIf(bolFormeln = True, xlFormulas, xlValues), _
    lookat:=xlWhole, searchorder:=xlByRows, searchdirection:=xlPrevious)
    If Zelle Is Nothing Then
    fncLastRow = 0
    Else
    fncLastRow = Zelle.Row
    End If
    End If
    End With
    End Function
    

    Anzeige
    AW: VBA -MSG- Finde letzte Zeile und Lösche nach
    24.10.2016 21:24:41
    Leon
    Danke fcs Franz,
    das funktioniert- dachte nicht das dafür so ein langer Code nötig wird.
    Danke für die Mühe.
    LG Leon

    333 Forumthreads zu ähnlichen Themen

    Anzeige
    Anzeige
    Anzeige

    Beliebteste Forumthreads (12 Monate)

    Anzeige

    Beliebteste Forumthreads (12 Monate)

    Anzeige
    Anzeige
    Anzeige