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

Forumthread: Wert per VBA suchen, gefunden - Zeile löschen

Wert per VBA suchen, gefunden - Zeile löschen
26.09.2007 17:26:00
Ina
Hallo Forum,
per TextBox suche ich Werte in der Tabelle1 (Spalte B - Spalte F). Das Ergebnis der Suche wird in einer ListBox aufgelistet und kann per Klick in weiteren TextBoxen mit allen Werten dargestellt, geändert und zurückgeschrieben werden.
So weit alles Ok, jetzt folgen meine Problemfälle...
Problem 1
Einige Werte möchte ich löschen, das heisst, wenn gefunden, soll die Zeile, die den Wert enthält, per Klick auf einen CommandButton gelöscht werden.
Problem 2
In der Spalte B werden - falls Spalte C einen Wert enthält - aufsteigende Nummern mit der Formel
=WENN(C5>"";B4+1;"") vergeben.
Beim Löschen einer Zeile erscheint in Spalte B der Folgezeile #BEZUG.
Wer kann mir bei meinen Problemen - möglichst mit einem Codebeispiel - weiterhelfen?
Ich habe meine Mappe hochgeladen. Zu finden unter:
https://www.herber.de/bbs/user/46354.xls
Danke für eure Hilfe!
Gruss, Ina

Anzeige

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Wert per VBA suchen, gefunden - Zeile löschen
26.09.2007 19:57:33
Daniel
Hi
zu 2) klar, das der Fehler kommt, schließlich löschst du dir ja die Zelle, auf die sich die Formel bezieht, weg.
das löst du über einen indirekten Zellbezug mit BEREICH.VERSCHIEBEN oder INDIREKT.
=wenn(C5>"";bereich.verschieben(B5;-1;0)+1;"")
=wenn(C5>"";INDIREKT("B"&ZEILE()-1)+1;"")
zu 1
wenn du die Zeilen-Nr der zu löschenden Zeile hast, geht das einfach mit
ROWS(xxx).delete.
Als Code für deinen Commandbutton 3 dann so:

Private Sub CommandButton3_Click()   '  Löschen
Dim intZ As Integer
Dim durchsuchen, finden As Range
Set durchsuchen = Sheets("Tabelle1").Range("B4:B" & _
Sheets("Tabelle1").Range("B65536").End(xlUp).Row)
For Each finden In durchsuchen
If finden.Text = TextBox1.Text Then
intZ = finden.Row
Exit For
End If
Next finden
Rows(intZ).Delete
End Sub


Gruß, Daniel

Anzeige
Hallo daniel, das klappt bestens! Riesigen Dank!
26.09.2007 20:19:00
Ina
Vielen, vielen Dank!
;

Forumthreads zu verwandten Themen

Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

Wert per VBA suchen und Zeile löschen in Excel


Schritt-für-Schritt-Anleitung

Um einen Wert in Excel zu suchen und die entsprechende Zeile zu löschen, kannst Du VBA verwenden. Hier ist eine Schritt-für-Schritt-Anleitung:

  1. Öffne die Excel-Datei und drücke ALT + F11, um den VBA-Editor zu öffnen.

  2. Füge ein neues Modul hinzu: Rechtsklick auf "VBAProject (DeineDatei)", dann „Einfügen“ > „Modul“.

  3. Kopiere und füge den folgenden Code ein:

    Private Sub CommandButton3_Click()   '  Löschen
        Dim intZ As Integer
        Dim durchsuchen, finden As Range
        Set durchsuchen = Sheets("Tabelle1").Range("B4:B" & _
        Sheets("Tabelle1").Range("B65536").End(xlUp).Row)
    
        For Each finden In durchsuchen
            If finden.Text = TextBox1.Text Then
                intZ = finden.Row
                Exit For
            End If
        Next finden
    
        Rows(intZ).Delete
    End Sub
  4. Erstelle ein UserForm mit TextBox (TextBox1) und einem CommandButton (CommandButton3) für den Löschvorgang.

  5. Starte das Makro, indem Du den Button klickst. Der Wert in TextBox1 wird in Spalte B gesucht und die entsprechende Zeile gelöscht.


Häufige Fehler und Lösungen

  1. #BEZUG! Fehler:

    • Dieser Fehler tritt auf, wenn eine Zelle gelöscht wird, auf die sich eine Formel bezieht. Um dies zu vermeiden, kannst Du einen indirekten Zellbezug verwenden. Beispiel:
    =WENN(C5<>"";BEREICH.VERSCHIEBEN(B5;-1;0)+1;"")
  2. Fehlerhafte Zeilenlöschung:

    • Stelle sicher, dass die richtige Zeile gelöscht wird. Überprüfe, ob der Wert in TextBox1 exakt dem Wert in der Tabelle entspricht.

Alternative Methoden

Falls Du nicht mit VBA arbeiten möchtest, kannst Du auch die Filterfunktion in Excel verwenden:

  1. Filter aktivieren: Wähle die gesamte Tabelle und gehe zu „Daten“ > „Filter“.
  2. Filter anwenden: Klicke auf den Dropdown-Pfeil in der Spalte, in der Du den Wert suchen möchtest, und wähle den Wert aus.
  3. Zeile löschen: Markiere die gefilterten Zeilen, klicke mit der rechten Maustaste und wähle „Löschen“.

Praktische Beispiele

  • Beispiel 1: Du möchtest alle Zeilen löschen, die einen bestimmten Text in Spalte B enthalten. Verwende den oben genannten VBA-Code, um dies zu automatisieren.
  • Beispiel 2: Du kannst die Filtermethode verwenden, um nur die Zeilen mit dem gesuchten Wert anzuzeigen und dann alle zu löschen.

Tipps für Profis

  • Automatisierung: Du kannst den VBA-Code erweitern, um mehrere Werte gleichzeitig zu verarbeiten.
  • Daten sichern: Erstelle immer eine Sicherungskopie Deiner Daten, bevor Du Zeilen löschst.
  • Fehlermeldungen: Implementiere Fehlermeldungen im VBA-Code, um den Benutzer zu informieren, falls der gesuchte Wert nicht gefunden wird.

FAQ: Häufige Fragen

1. Wie kann ich mehrere Zeilen auf einmal löschen?
Du kannst eine Schleife im VBA-Code einfügen, um alle gefundenen Zeilen zu löschen.

2. Funktioniert das auch in Excel Online?
Leider funktioniert VBA nur in Desktopversionen von Excel. In Excel Online musst Du alternative Methoden wie Filter verwenden.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige