Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: mit VBA bestimmte Zellen suchen, ersetzen

mit VBA bestimmte Zellen suchen, ersetzen
AndreasK
Hallo zusammen, ich hab folgendes Problem und komm mal wieder nicht weiter.
Ich möchte im aktiven Arbeitsblatt den Inhalt aller Zellen die die Zeichenfolge "gs" enthalten löschen.
Ebenso den Inhalt der 5 benachbarten rechten Zellen.
Wenn also z.B. in der Zelle F17 der Inhalt gs ist soll die Zelle F17 bis K17 geleert werden.
Die Tabelle hat im moment die Größe A1..EN1000 wächst aber noch.
Hoffe auf eure Hilfe.
Grüße Andreas
Anzeige
AW: mit VBA bestimmte Zellen suchen, ersetzen
10.07.2009 10:34:09
AndreasK
Ich habe diesen Code zurechtgebastelt, löscht halt nur die Zellen mit Inhalt "GS" aber nicht die 5 Zellen rechts daneben.
Sub Zellen_mit_inhalt_GS_löschen()
ActiveSheet.Select
Range("A1..EN1000").Select
Selection.Replace What:="gs", Replacement:="", LookAt:=xlPart
End Sub
Grüße Andreas
Anzeige
AW: mit VBA bestimmte Zellen suchen, ersetzen
10.07.2009 11:06:15
Wolli
Hallo Andreas,
dieses Makro macht das gewünschte im ganzen Arbeitsblatt:
Sub Zellen_mit_Inhalt_gs_löschen()
Dim c As Range
For Each c In ActiveSheet.UsedRange.Cells
If InStr(LCase(c.Value), "gs")  0 Then
Range(c, c.Offset(0, 5)).ClearContents
End If
Next c
End Sub
Wenn aber "gs" nur in Spalte F auftauchen kann, kannst Du auch dieses Makro verwenden, es dürfte bei großen Datenmengen deutlich schneller sein, da es nicht alle Zeilen untersucht. Die Spalte kannst Du vorgeben: Columns(6) bedeutet Spalte F.
Sub Zellen_mit_Inhalt_gs_löschen2()
Dim c As Range
For Each c In Intersect(ActiveSheet.UsedRange.Cells, Columns(6))
If InStr(LCase(c.Value), "gs")  0 Then
Range(c, c.Offset(0, 5)).ClearContents
End If
Next c
End Sub
Geht's? Gruß, Wolli
Anzeige
AW: mit VBA bestimmte Zellen suchen, ersetzen
10.07.2009 11:25:28
AndreasK
Hallo Wolli, danke für die Schnelle Antwort,
Wie es halt so ist habe ich vergessen das die Tabelle geschützt ist und nur die Freigegebenen Zellen geleert / gelöscht werden sollen. Wenn ich dein Makro ausführe kommt die Meldung Laufzeitfehler 1004 Zelle ist schreibgeschützt. In den geschützten Zellen steht teilweise auch "gs", darf dort aber auch nicht gelöscht werden. Vielleicht fällt dir ja noch was ein. PS: in meinem Code kam diese Meldung nicht.
Grüße Andreas
Anzeige
AW: mit VBA bestimmte Zellen suchen, ersetzen
10.07.2009 11:30:27
AndreasK
Und nochmal Hallo Wolli,
ich habe eben mal den Blattschutz aufgehoben und jetzt kommt noch eine Fehlermeldung:
Wieder Laufzeitfehler 1004 mit dem Text Kann "Teil einer verbundenen Zelle nicht ändern"
Grüße Andreas
AW: mit VBA bestimmte Zellen suchen, ersetzen
10.07.2009 11:42:47
Wolli
Hallo Andreas, dass der Fehler bei Dir nicht kam, liegt daran, dass Dein Code aus der Zelle die Buchstaben "gs" herauslöscht. Mein Code löscht den gesamten Inhalt der Zelle.
Du müsstest jetzt bitte definieren, was passieren soll, wenn
- die Zelle mit "gs" geschützt ist
- eine oder mehrere Zellen daneben geschützt sind
- die Zellen daneben zu einem Zellverbund gehören, der aus dem zu löschenden Bereich herausragt.
Aber vielleicht ist es einfacher, die Fehlermeldung zu ignorieren und das machen zu lassen, was geht. So:
Sub Zellen_mit_Inhalt_gs_löschen()
Dim c As Range
On Error Resume Next
For Each c In ActiveSheet.UsedRange.Cells
If InStr(c.Value, "gs")  0 Then
Range(c, c.Offset(0, 5)).ClearContents
End If
Next c
On Error GoTo 0
End Sub
bzw.
Sub Zellen_mit_Inhalt_gs_löschen2()
Dim c As Range
On Error Resume Next
For Each c In Intersect(ActiveSheet.UsedRange.Cells, Columns(6))
If InStr(LCase(c.Value), "gs")  0 Then
Range(c, c.Offset(0, 5)).ClearContents
End If
Next c
On Error GoTo 0
End Sub
Gruß, Wolli
Anzeige
AW: mit VBA bestimmte Zellen suchen, ersetzen
10.07.2009 11:57:42
AndreasK
Hallo Wolli,
danke dir vielmals für deine Hilfe.
Läuft wie gewünscht :-)
Ach ja da sieht man mal wieder was man noch so alles lernen und verstehen muß
Grüße
Andreas
Hoffentlich läuft's auch richtig!
10.07.2009 12:19:59
Wolli
Schön dass es geht, aber etwas unbefriedigend. Bist Du sicher, dass das Makro Dir nicht eventuell Daten zerschießt, die Du noch brauchst? Oder dass etwas, das gelöscht werden sollte, übergangen wird? Aber das kann man nur beheben, wenn man sich die Mühe macht, die Bedingungen sauber zu definieren.
Gutes Gelingen, Gruß, Wolli
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

Mit VBA bestimmte Zellen suchen und ersetzen


Schritt-für-Schritt-Anleitung

Um in Excel bestimmte Zellen zu suchen und zu ersetzen, kannst Du ein VBA-Makro verwenden. Hier ist eine Schritt-für-Schritt-Anleitung, wie Du dies umsetzen kannst:

  1. Öffne Excel und gehe zu dem Arbeitsblatt, in dem Du die Zellen bearbeiten möchtest.

  2. Drücke ALT + F11, um den VBA-Editor zu öffnen.

  3. Füge ein neues Modul hinzu:

    • Klicke im Menü auf Einfügen und wähle Modul.
  4. Kopiere den folgenden Code in das Modul:

    Sub Zellen_mit_inhalt_GS_löschen()
       Dim c As Range
       On Error Resume Next
       For Each c In ActiveSheet.UsedRange.Cells
           If InStr(c.Value, "gs") > 0 Then
               Range(c, c.Offset(0, 5)).ClearContents
           End If
       Next c
       On Error GoTo 0
    End Sub
  5. Schließe den VBA-Editor und gehe zurück zu Excel.

  6. Führe das Makro aus:

    • Drücke ALT + F8, wähle das Makro Zellen_mit_inhalt_GS_löschen und klicke auf Ausführen.

Das Makro wird nun alle Zellen, die "gs" enthalten, sowie die fünf Zellen rechts davon leeren.


Häufige Fehler und Lösungen

  • Laufzeitfehler 1004: Wenn Du auf diesen Fehler stößt, könnte es daran liegen, dass einige Zellen geschützt sind. Um dies zu umgehen, füge On Error Resume Next in Deinen Code ein, wie im obigen Beispiel gezeigt.

  • Teil einer verbundenen Zelle nicht ändern: Dieser Fehler tritt auf, wenn Du versuchst, Zellen zu ändern, die Teil einer verbundenen Zelle sind. Um dies zu vermeiden, stelle sicher, dass Du nur Zellen bearbeitest, die nicht verbunden sind oder ignoriere den Fehler im Code.


Alternative Methoden

Wenn Du Excel ersetzen nur in einer Spalte möchtest, kannst Du den Code wie folgt anpassen:

Sub Zellen_mit_Inhalt_gs_löschen_spalte()
    Dim c As Range
    On Error Resume Next
    For Each c In Intersect(ActiveSheet.UsedRange.Cells, Columns(6)) 'Spalte F
        If InStr(LCase(c.Value), "gs") > 0 Then
            Range(c, c.Offset(0, 5)).ClearContents
        End If
    Next c
    On Error GoTo 0
End Sub

Dieses Makro prüft nur die Zellen in Spalte F und ist besonders nützlich, wenn Du große Datenmengen hast.


Praktische Beispiele

Hier sind einige praktische Beispiele, wie Du Excel VBA suchen und ersetzen kannst:

  1. Alle Zellen in einer bestimmten Spalte: Verwende das oben angegebene Makro für Spalte F, um schnell alle Zellen mit "gs" zu leeren.

  2. Daten in einer bestimmten Zeile: Du kannst auch den Bereich anpassen, wenn Du nur eine bestimmte Zeile bearbeiten möchtest, z.B. Range("F17:K17").ClearContents.


Tipps für Profis

  • Backup Deiner Daten: Bevor Du Makros ausführst, mache immer eine Sicherungskopie Deiner Daten.
  • Testumgebung: Teste Deine Makros in einer Testdatei, um sicherzustellen, dass sie wie gewünscht funktionieren.
  • Verwende Kommentare: Kommentiere Deinen Code, um die Funktionsweise für andere (oder Dich selbst in der Zukunft) verständlich zu machen.

FAQ: Häufige Fragen

1. Frage Wie kann ich das Skript anpassen, um nur in einer bestimmten Spalte zu suchen und zu ersetzen?

Antwort: Du kannst die Intersect-Funktion verwenden, um nur die gewünschten Spalten zu durchsuchen, wie im Beispiel für Spalte F gezeigt.

2. Frage Was kann ich tun, wenn ich eine Fehlermeldung aufgrund von geschützten Zellen erhalte?

Antwort: Füge On Error Resume Next in Deinen Code ein, um den Fehler zu ignorieren und nur die Zellen zu bearbeiten, die nicht geschützt sind.

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