Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: VBA Code - mehrere Zeilen löschen

VBA Code - mehrere Zeilen löschen
28.10.2014 07:55:23
Michel
Hallo zusammen
Zurzeit verwende ich diesen code;
Sub zeilenloeschen()
Dim i As Long
Dim letzteZeile As Long
Dim suchBereich As Range
Dim gefunden As Range
Dim ersterTreffer As String
Dim suchWert As String
suchWert = "x" 'hier kommt dein Suchwert rein
With ThisWorkbook.Sheets("Auswertung")
letzteZeile = .Range("A" & Rows.Count).End(xlUp).Row
Set suchBereich = .Range("A2:A50")
Set gefunden = suchBereich.Find(What:=suchWert, LookAt:=xlPart)
If Not gefunden Is Nothing Then
ersterTreffer = gefunden.Address
Do
gefunden.Activate
ActiveCell.EntireRow.Delete shift:=xlUp
Set gefunden = suchBereich.Find(What:=suchWert, LookAt:=xlPart)
Loop While Not gefunden Is Nothing
End If
End With
End Sub
Bei diesem kann ich nach betätigung eines Button die Zeilen Nummer eingeben, welche dann gelöscht wird.
Nun meine Bitte an die Experten, kann mir jemand einen Code geben, bei welchem ich von bis eingeben kann?
Danke für die Hilfe =)
Gruss
Mischu

Anzeige

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA Code - mehrere Zeilen löschen
28.10.2014 08:17:40
Matthias
Hallo
Zitat:
Bei diesem kann ich nach betätigung eines Button die Zeilen Nummer eingeben, welche dann gelöscht wird.
Hab keine Eingabe gefunden, wo machst Du das denn?
Vielleicht sollst Du da ne Inputbox benutzen bzw. 2
Die musst Du aber noch auf eine korrekte Eingabe überprüfen !
Option Explicit
Sub zeilenloeschen()
Dim i As Long
Dim letzteZeile As Long
Dim suchBereich As Range
Dim gefunden As Range
Dim ersterTreffer As String
Dim suchWert As String
Dim FirstRow&
Dim LastRow&
On Error GoTo Fehler
suchWert = "x" 'hier kommt dein Suchwert rein
    FirstRow = InputBox("Bitte 1.Zeile eingeben")
LastRow = InputBox("Bitte 2.Zeile eingeben")
With ThisWorkbook.Sheets("Auswertung")
letzteZeile = .Range("A" & Rows.Count).End(xlUp).Row
Set suchBereich = .Range("A" & FirstRow & ":A" & LastRow)
Set gefunden = suchBereich.Find(What:=suchWert, LookAt:=xlPart)
If Not gefunden Is Nothing Then
ersterTreffer = gefunden.Address
Do
gefunden.Activate
ActiveCell.EntireRow.Delete shift:=xlUp
Set gefunden = suchBereich.Find(What:=suchWert, LookAt:=xlPart)
Loop While Not gefunden Is Nothing
End If
End With
Fehler:
On Error GoTo 0
End Sub
Gruß Matthias

Anzeige
AW: VBA Code - mehrere Zeilen löschen
28.10.2014 10:37:56
Michel
Hallo Matthias
Stimmt, ich hatte zwei varianten mit zwei unterschiedlichen Codes.
Nun habe ich dir leider den falschen geschickt.
Habe deinen Code angepasst,
Sub zeilenloeschen()
Dim FirstRow&
Dim LastRow&
FirstRow = InputBox("Bitte 1.Zeile eingeben")
LastRow = InputBox("Bitte 2.Zeile eingeben")
With ThisWorkbook.Sheets("Auswertung")
ActiveCell.EntireRow.Delete
End With
End Sub
Nur verstehe ich nicht ganz, wieso er mir nicht die Zeilen löscht, welche ich in der Inputbox angegeben habe.
Kannst du mir weiterhelfen?
Danke schon im Voraus
Gruss
Mischu

Anzeige
AW: VBA Code - mehrere Zeilen löschen
28.10.2014 11:48:49
Matthias
Hallo
Zitat:
Nur verstehe ich nicht ganz, wieso er mir nicht die Zeilen löscht, welche ich in der Inputbox angegeben habe.

Wenn Du sie im weitere Verauf des Makro nicht angibst, werden sie auch nicht gelöscht!
Du hast ja mit:
ActiveCell.EntireRow.Delete

nur die Zeile der aktiven Zelle gelöscht.


Probier das:
Option Explicit
Sub zeilenloeschen()
Dim FirstRow&, LastRow&
On Error GoTo Fehler
FirstRow = InputBox("Bitte 1.Zeile eingeben")
LastRow = InputBox("Bitte 2.Zeile eingeben")
With ThisWorkbook.Sheets("Auswertung")
.Rows(FirstRow & ":" & LastRow).Delete
End With
Exit Sub
Fehler:
MsgBox "Zeilenzahl als Eingabe erwartet!", vbCritical
On Error GoTo 0
End Sub

Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

VBA Code zum Löschen mehrerer Zeilen in Excel


Schritt-für-Schritt-Anleitung

Um in Excel mit VBA mehrere Zeilen zu löschen, kannst Du folgenden Code verwenden. Dieser fragt den Benutzer nach zwei Zeilen-Nummern und löscht alle Zeilen zwischen diesen Zahlen:

Option Explicit
Sub zeilenloeschen()
    Dim FirstRow As Long, LastRow As Long
    On Error GoTo Fehler
    FirstRow = InputBox("Bitte 1. Zeile eingeben")
    LastRow = InputBox("Bitte 2. Zeile eingeben")

    With ThisWorkbook.Sheets("Auswertung")
        .Rows(FirstRow & ":" & LastRow).Delete
    End With
    Exit Sub
Fehler:
    MsgBox "Zeilenzahl als Eingabe erwartet!", vbCritical
    On Error GoTo 0
End Sub

In diesem Code wird die InputBox verwendet, um die Zeilen-Nummern abzufragen. Achte darauf, dass Du die richtigen Werte eingibst, um Fehler zu vermeiden.


Häufige Fehler und Lösungen

  1. Fehlermeldung bei der Zeileneingabe
    Wenn Du eine ungültige Zahl oder einen leeren Wert eingibst, wird eine Fehlermeldung angezeigt. Stelle sicher, dass Du nur Zahlen eingibst.

  2. Nicht die gewünschten Zeilen gelöscht
    Überprüfe, ob die InputBox tatsächlich die gewünschten Zeilen abfragt. Achte darauf, dass die Zeilen im richtigen Blatt gelöscht werden ("Auswertung" muss existieren).

  3. Code funktioniert nicht
    Vergewissere Dich, dass Du den Code in einem Modul eingefügt hast und dass die Makros in Excel aktiviert sind.


Alternative Methoden

Neben VBA gibt es auch andere Möglichkeiten, mehrere Zeilen in Excel zu löschen:

  • Manuelles Löschen: Markiere die gewünschten Zeilen, Rechtsklick und wähle „Zeilen löschen“.
  • Excel-Funktionen: Du kannst auch Filter verwenden, um bestimmte Zeilen anzuzeigen und dann zu löschen.

Mit VBA kannst Du jedoch die Flexibilität genießen, die für größere Datenmengen erforderlich ist, etwa mit excel vba mehrere zeilen löschen.


Praktische Beispiele

Hier sind einige Beispiele, wie Du den VBA-Code anpassen kannst:

  1. Lösche basierend auf einem Suchwert:

    Dim suchWert As String
    suchWert = "x" ' Beispielwert
    ' Füge hier den Code ein, um nach dem suchWert zu suchen und die Zeilen zu löschen.
  2. Lösche mehrere Spalten:

    With ThisWorkbook.Sheets("Auswertung")
       .Columns("A:C").Delete ' Löscht die Spalten A bis C
    End With

Mit diesen Beispielen kannst Du Deine VBA-Fähigkeiten erweitern und verschiedene Funktionen von excel vba mehrere spalten löschen nutzen.


Tipps für Profis

  • Input-Validierung: Füge eine Validierung hinzu, um sicherzustellen, dass nur gültige Zeilen-Nummern eingegeben werden.
  • Fehlerbehandlung: Implementiere eine bessere Fehlerbehandlung, um spezifische Fehler zu identifizieren.
  • Makros optimieren: Verwende Application.ScreenUpdating = False, um die Performance zu verbessern, während Zeilen gelöscht werden.

FAQ: Häufige Fragen

1. Was ist der Unterschied zwischen ActiveCell und Rows?
ActiveCell bezieht sich auf die aktuell ausgewählte Zelle, während Rows spezifisch auf die Zeilen im Arbeitsblatt zugreift.

2. Wie kann ich mehrere Zellen in einer Zeile löschen?
Verwende .Cells(RowNumber, ColumnNumber).ClearContents oder .Cells(RowNumber, ColumnNumber).Delete für das Löschen von Inhalten oder Zellen.

3. Kann ich auch mehrere Spalten auf einmal löschen?
Ja, Du kannst mehrere Spalten mit .Columns("A:C").Delete auf einmal löschen, was sehr nützlich ist, wenn Du excel vba mehrere spalten löschen möchtest.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige