Thema
|
Datum
|
Von Nutzer
|
Rating
|
Antwort
|
|
07.10.2020 15:01:59 |
Martin |
|
|
|
07.10.2020 15:25:58 |
ralf_b |
|
|
|
07.10.2020 15:49:29 |
Gast79281 |
|
|
|
07.10.2020 15:57:00 |
Martin |
|
|
|
07.10.2020 16:42:38 |
ralf_b |
|
|
|
08.10.2020 09:05:46 |
Martin |
|
|
|
08.10.2020 10:16:21 |
ralf_b |
|
|
|
08.10.2020 11:03:58 |
Martin |
|
|
Zeilen nach oben in leere Zeile schieben / Auffüllen |
08.10.2020 10:21:20 |
Gast45325 |
|
|
Von:
Gast45325 |
Datum:
08.10.2020 10:21:20 |
Views:
691 |
Rating:
|
Antwort:
|
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.
|
- 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
Bitte geben Sie ein aussagekräftiges Thema an.
Bitte geben Sie eine gültige Email Adresse ein!
- 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 |
|
|
|
07.10.2020 15:25:58 |
ralf_b |
|
|
|
07.10.2020 15:49:29 |
Gast79281 |
|
|
|
07.10.2020 15:57:00 |
Martin |
|
|
|
07.10.2020 16:42:38 |
ralf_b |
|
|
|
08.10.2020 09:05:46 |
Martin |
|
|
|
08.10.2020 10:16:21 |
ralf_b |
|
|
|
08.10.2020 11:03:58 |
Martin |
|
|
Zeilen nach oben in leere Zeile schieben / Auffüllen |
08.10.2020 10:21:20 |
Gast45325 |
|
|