Live-Forum - Die aktuellen Beiträge
Datum
Titel
24.04.2024 19:29:30
24.04.2024 18:49:56
Anzeige
Archiv - Navigation
1860to1864
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
Letzte und vorletzte Zeile löschen
09.12.2021 12:33:00
Frank
Hallo, ich krieg es trotz vieler Beispiele im Netz einfach nicht hin.
- es soll die letzte Zeile gelöscht werden
- es darf die erste Zeile (Überschrift) nicht gelöscht werden
- wenn in letzter Zeile in Spalte B ein "Ja" vorhanden ist sollen die letzten zwei Zeilen gelöscht werden
Hört sich einfach an, dennoch bin für eine Unterstützung dankbar.
Gruß Frank.

22
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Letzte und vorletzte Zeile löschen
09.12.2021 12:40:05
UweD
Hallo
in ein Modul

Sub Frank()
Dim LR As Long
LR = Cells(Rows.Count, "B").End(xlUp).Row 'letzte Zeile der Spalte
If LR >= 3 And Cells(LR, 2) = "Ja" Then
Rows(LR - 1).Resize(2).Delete
End If
End Sub
LG UweD
Update..
09.12.2021 12:48:02
UweD

Sub Frank()
Dim LR As Long, iJ As Integer
LR = Cells(Rows.Count, "B").End(xlUp).Row 'letzte Zeile der Spalte
If LR >= 2 Then
If LR > 3 And Cells(LR, 2) = "Ja" Then iJ = 1
Rows(LR).Offset(-iJ).Resize(1 + iJ).Delete
End If
End Sub
LG UweD
AW: Letzte und vorletzte Zeile löschen
09.12.2021 12:45:26
volti
Hallo Frank,
eine Idee...
Code:

[Cc]

Sub LetzteZeileLoeschen() Dim iZeile As Long iZeile = Cells(Rows.Count, "B").End(xlUp).Row If Cells(iZeile, "B").Value = "ja" Then Rows(iZeile & ":" & (iZeile - 1)).Delete Else Rows(iZeile & ":" & iZeile).Delete End If End Sub

_________________________
viele Grüße aus Freigericht 😊
Karl-Heinz

Anzeige
AW: Letzte und vorletzte Zeile löschen
09.12.2021 12:49:55
volti
Überschrift vergessen...
Code:

[Cc]

Sub LetzteZeileLoeschen() Dim iZeile As Long iZeile = Cells(Rows.Count, "B").End(xlUp).Row If Cells(iZeile, "B").Value = "ja" Then If iZeile > 2 Then Rows(iZeile & ":" & (iZeile - 1)).Delete Else If iZeile > 1 Then Rows(iZeile & ":" & iZeile).Delete End If End Sub

_________________________
viele Grüße aus Freigericht 😊
Karl-Heinz

Anzeige
AW: Letzte und vorletzte Zeile löschen
09.12.2021 13:00:06
Frank
Vielen Dank,
jetzt löscht er mir aber nicht die letzte Zeile wenn in Spalte B nichts eingetragen wurde
AW: Letzte und vorletzte Zeile löschen
09.12.2021 13:07:27
volti
Hallo Frank,
zur Ermittlung der letzten Zeile musst Du dir eine Spalte aussuchen, anhand der Du das ermitteln willst. Ich hatte jetzt "B" genommen, also wird hier auch die letzte Zeile, in der in "B" was steht genommen. Du kannst ja auch z.B. "C" verwenden.
iZeile = Cells(Rows.Count, "C").End(xlUp).Row
Gruß KH
AW: Letzte und vorletzte Zeile löschen
09.12.2021 13:15:48
Frank
Vielen Dank, war mein Fehler!
Gruß Frank
AW: Letzte und vorletzte Zeile löschen
09.12.2021 13:40:42
Frank
Mist, ich war nicht weitsichtig genug...
Ich habe zusätzlich eine ListBox in welcher ich die zu löschende Zeile auswähle.

Dim i As Long
For i = 0 To ListBox1.ListCount - 1 '(-1 wegen Row.Source)
If ListBox1.Selected(i) = True Then
Sheets("TabStromEG").Rows(i + 2).EntireRow.Delete
End If
Next
Wenn nun eine Zeile ausgewählt wird in welche in Spalte B "Ja" steht soll überprüft werden ob in der Zeile darüber ODER eine Zeile darunter auch ein "Ja" in Spalte B steht -> dies dann zusätzlich auch löschen...
Anzeige
AW: Letzte und vorletzte Zeile löschen
09.12.2021 14:31:47
Frank
Wie kann man innerhalb der ListBox erkennen ob in der ausgewählten Zeile an zweiter Stelle ein "Ja" vorhanden und wenn dieses der Fall ist überprüfen ob ein "Ja" darüber oder darunter auch vorkommt und beide Einträge mit "Ja" dann löschen?
Gruß Frank
AW: Letzte und vorletzte Zeile löschen
09.12.2021 14:55:05
volti
Hallo Frank,
ich kenne Deine Listbox und auch die Rückgabe der Listbox nicht.
Wenn diese eine Zeilennummer zurückgibt, gilt doch der Restcode so wie von mir oder Uwe (bei dem Du Dich auch für seinen Einsatz bedanken solltest) weiterhin.
iZeile = VonListbox
  If Cells(iZeile, "B").Value = "ja" Then
     If iZeile > 2 Then Rows(iZeile & ":" & (iZeile - 1)).Delete
  Else
     If iZeile > 1 Then Rows(iZeile & ":" & iZeile).Delete
  End If
Gruß KH
Anzeige
AW: Letzte und vorletzte Zeile löschen
09.12.2021 15:40:00
Frank
Hallo Karl-Heinz,
ich weiß nicht ob ich dich richtig verstanden habe, aber ich denke das ich in meinem verwendeten ListBox-Code nur eine Rückgabe erhalte ob eine Zeile ausgewählt wurde oder nicht.
Bisher verwendeter Code:

Dim i As Long
For i = 0 To ListBox1.ListCount - 1 '(-1 wegen Row.Source)
If ListBox1.Selected(i) = True Then
Sheets("TabStromEG").Rows(i + 2).EntireRow.Delete
End If
Next
Deshalb kann ich deine Abfrage hier auch nicht einbauen oder sehe ich das falsch?
Vielleicht denke ich aber auch nur viel zu kompliziert.
Gruß Frank
Anzeige
AW: Letzte und vorletzte Zeile löschen
09.12.2021 15:52:46
volti
Hallo FRank,
ins Blaue und ungetestet. Kannst Du ggf. noch verfeinern.
Ansonsten wäre eine Beispielmappe sinnvoll.
Dim i As Long

  For i = 0 To ListBox1.ListCount - 1 '(-1 wegen Row.Source)
    If ListBox1.Selected(i) = True Then
       With Sheets("TabStromEG")
            If .Cells(i, "B").Value = "ja" Then
               If i > 2 Then .Rows(i & ":" & (i - 1)).Delete
            Else
               If i > 1 Then .Rows(i & ":" & i).Delete
            End If
        End With
    End If
  Next i
Gruß KH
Anzeige
AW: Letzte und vorletzte Zeile löschen
09.12.2021 16:42:09
Frank
Vielen Dank für deine Unterstützung, Karl-Heinz!
Irgendwie verstehe ich die Parameter nicht richtig...
bei Verwendung dieses Codes löscht es mir die Nein-Zeilen 2 Zeilen zu hoch und die Ja-Zeilen scheinen nicht erkannt zu werden und werden deshalb wie die Nein-Zeilen 2 Zeilen zu hoch gelöscht...?
AW: Letzte und vorletzte Zeile löschen
09.12.2021 17:03:58
Frank
Nachdem ich noch einiges Tests durchlaufen habe folgendes Ergebnis:
- Nein-Zeilen werden 2 Zeilen zu hoch gelöscht (wie kann der Offset verändert werden?)
- Ja-Zeilen werden erkannt und die darüberliegende Ja-Zeile mit gelöscht (hier aber auch das Offset-Problem, habe hierfür mal extra 2 Zeilen darunter zum Löschen ausgewählt)
- es wird nur die darüberliegende Ja-Zeile gelöscht, sollte sich die zweite Ja-Zeile allerdings darunter befinden wird diese nicht mit gelöscht
Anzeige
AW: Letzte und vorletzte Zeile löschen
09.12.2021 17:12:22
volti
Hier noch ein Versuch.
Ohne Mappe schwer zu testen.....
Dim i As Long, Offs1 As Integer, Offs2 As Integer

  For i = 0 To ListBox1.ListCount - 1 '(-1 wegen Row.Source)
    If ListBox1.Selected(i) = True Then
       With Sheets("TabStromEG")
            i = i + 2
MsgBox CStr(i)                                  ' Hier schaun, ob richtige Zeile
            If .Cells(i, "B").Value = "Ja" Then         ' In B steht "Ja"
               If .Cells(i, "B").Offset(-1, "B").Value = "Ja" Then Offs1 = 1
               If .Cells(i, "B").Offset(1, "B").Value = "Ja" Then Offs2 = 1
               If (i - Off1) > 1 Then
                  .Rows((i - Offs1) & ":" & (i + Offs2)).Delete
               End If
            Else                                        ' In B steht kein "Ja"
               If i > 1 Then .Rows(i & ":" & i).Delete  ' Diese Zeile löschen
            End If
        End With
        Exit For                                        ' Es kann nur eine Listwert true sein
    End If
  Next i
Gruß KH
Anzeige
AW: Letzte und vorletzte Zeile löschen
09.12.2021 19:55:57
Frank
Hallo Karl-Heinz,
vielen Dank für deinen Versuch!
Durch das Beispiel konnte ich viel dazulernen und hat meine Sichtweise ein kleines Stück weitergebracht.
Gruß Frank
AW: Letzte und vorletzte Zeile löschen
09.12.2021 18:15:21
Daniel
Hi
probiers mal so:

dim rngLösch as range
Dim i As Long
For i = 0 To ListBox1.ListCount - 1 '(-1 wegen Row.Source)
If ListBox1.Selected(i) = True Then
With Sheets("TabStromEG").Rows(i + 2, 2)
set rngLösch = .Cells
if .value = "ja" Then
if .offset(-1, 0).value = "ja" then Set rngLösch = union(rngLösch, .offset(-1, 0)
if .offset(1, 0).value = "ja" then Set rngLösch = union(rngLösch, .offset(1, 0)
end if
rngLösch.EntireRow.Delete
End with
End If
Next
Gruß Daniel
Anzeige
AW: Letzte und vorletzte Zeile löschen
09.12.2021 18:25:59
Frank
Vielen Dank,
die zwei Zeilen mit union bringen noch Fehler, müssen diese nicht noch definiert werden?
AW: Letzte und vorletzte Zeile löschen
09.12.2021 19:25:14
Daniel
Nö. Ich hab nen Tippfehler drin
Zähl mal die Klammern durch.
Vielleicht kannst du den Fehler selber finden und korrigieren
Und mach mal aus dem
With Sheets("TabStromEG").Rows(i + 2, 2)
Das hier:
With Sheets("TabStromEG").Cells(i + 2, 2)
Gruß Daniel
AW: Letzte und vorletzte Zeile löschen
09.12.2021 19:53:34
Frank
Da hast du natürlich recht, noch eine andere Kleinigkeit korrigiert und läuft!
Vielen Dank!!
Gruß Frank
AW: Letzte und vorletzte Zeile löschen
09.12.2021 13:09:00
UweD
dann so
es wird jetzt die letzte Zeile des gesamten Blattes verwendet

Sub Frank()
Dim LR As Long, iJ As Integer
LR = Cells.SpecialCells(xlCellTypeLastCell).Row 'Letzte Zeile des gesamten Blattes
If LR >= 2 Then
If LR > 3 And Cells(LR, 2) = "Ja" Then iJ = 1
Rows(LR).Offset(-iJ).Resize(1 + iJ).Delete
End If
End Sub

AW: Letzte und vorletzte Zeile löschen
09.12.2021 15:41:20
Frank
Sorry für verspätete Antwort.
Funktioniert ebenso wie die Variante von Karl-Heinz, vielen Dank.

303 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige