Thema Datum  Von Nutzer Rating
Antwort
07.10.2020 15:01:59 Martin
NotSolved
07.10.2020 15:25:58 ralf_b
NotSolved
07.10.2020 15:49:29 Gast79281
NotSolved
07.10.2020 15:57:00 Martin
NotSolved
07.10.2020 16:42:38 ralf_b
NotSolved
08.10.2020 09:05:46 Martin
NotSolved
08.10.2020 10:16:21 ralf_b
NotSolved
08.10.2020 11:03:58 Martin
NotSolved
Rot Zeilen nach oben in leere Zeile schieben / Auffüllen
08.10.2020 10:21:20 Gast45325
NotSolved

Ansicht des Beitrags:
Von:
Gast45325
Datum:
08.10.2020 10:21:20
Views:
691
Rating: Antwort:
  Ja
Thema:
Zeilen nach oben in leere Zeile schieben / Auffüllen
Option Explicit

Sub Verschieben()
  
  Dim rngCell       As Excel.Range
  Dim rngCellFirst  As Excel.Range
  Dim rngCellLast   As Excel.Range
  
  Set rngCellFirst = Range("A1") 'Anfang (erste Zelle)
  Set rngCellLast = Cells(Rows.Count, rngCellFirst.Column).End(XlDirection.xlUp) 'Ende (letzte Zelle)
'  'ODER konkret auf ein Blatt bezogen
'  With Worksheets("Tabelle1")
'    Set rngCellFirst = .Range("A1") 'Anfang (erste Zelle)
'    Set rngCellLast = .Cells(.Rows.Count, rngCellFirst.Column).End(XlDirection.xlUp) 'Ende (letzte Zelle)
'  End With
  
  'das ist in diesem Beispiel nicht möglich (weil wir in A1 anfangen)
  'theoretisch ist es aber möglich und man sollte darauf prüfen ;)
  If rngCellLast.Row <= rngCellFirst.Row _
    Then Exit Sub
  
  Set rngCell = rngCellFirst
  'wir wissen nicht wieviel Elemente wir löschen werden, darum Do..Loop
  Do While rngCell.Row <= rngCellLast.Row
    If rngCell.Value = "" Then
      Set rngCell = rngCell.Offset(1)
      'wir müssen darauf achten, dass wir unsere
      'Referenz auf rngCellFirst beim Löschen nicht verlieren
      If rngCell.Offset(-1).Address = rngCellFirst.Address Then
        Set rngCellFirst = rngCell
      End If
      '»gesamte« Zeile löschen
      'würden wir die Referenz zuvor nicht ändern,
      'würde nach dem Löschen rngCell nicht mehr existieren
      Call rngCell.Offset(-1).EntireRow.Delete(XlDeleteShiftDirection.xlShiftUp) 'untere Zeilen nach oben schieben
      'dadurch das wir hier mit Objekten arbeiten, passt sich
      'nun nach dem löschen der Zeilen-Index von rngCellLast automatisch an
      'und unsere Abbruchbedingung der Do..Loop Schleife ist
      'immernoch gewährleistet
    Else
      Set rngCell = rngCell.Offset(1) 'Bereich eine Zeile tiefer referenzieren
    End If
  Loop
  
  With rngCellFirst.Worksheet
    If Not ActiveSheet Is rngCellFirst.Worksheet Then
      rngCellFirst.Worksheet.Activate 'Blatt anzeigen, damit wir etwas darauf selektieren können
    End If
    'den sich ergebenen Bereich markieren
    .Range(rngCellFirst, rngCellLast).Select
  End With
  
End Sub

Mit ein wenig Erklärung dazu.

Das Beispiel löscht die gesamte Zeile. Man kann allerdings auch gezieht einen Bereich löschen, ohne das etwas links und rechts davon mit verschwindet.


Ihre Antwort
  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen
Thema: Name: Email:



  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen

Thema Datum  Von Nutzer Rating
Antwort
07.10.2020 15:01:59 Martin
NotSolved
07.10.2020 15:25:58 ralf_b
NotSolved
07.10.2020 15:49:29 Gast79281
NotSolved
07.10.2020 15:57:00 Martin
NotSolved
07.10.2020 16:42:38 ralf_b
NotSolved
08.10.2020 09:05:46 Martin
NotSolved
08.10.2020 10:16:21 ralf_b
NotSolved
08.10.2020 11:03:58 Martin
NotSolved
Rot Zeilen nach oben in leere Zeile schieben / Auffüllen
08.10.2020 10:21:20 Gast45325
NotSolved