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

Find Option für ganze Arbeitmappe prüfen

Forumthread: Find Option für ganze Arbeitmappe prüfen

Find Option für ganze Arbeitmappe prüfen
01.12.2024 15:50:53
Piet
Hallo Kollegen

ich habe bei einem Suchen/Ersetzen Suchlauf ein böses Eigentor geschoßen! Mir viele Daten vernichtet!
Vokabel.Columns(2).Replace "d", "", xlPart - Dieser Code sollte nur im Sheet Vokabel, Spalte B, den Text "d" löschen

Weil ich vorher mit einem Excel Suchlauf die ganze Arbeitmappe durchsucht hatte, stand Suchen Option auf "Arbeitsmappe"
Statt nur im Sheet Vokabeln "d" zu löschen geschah es in allen Tabellen und in allen Zellen, obwohl im Code Sheet Vokabel steht!
Seltsamerweise wurde beim zweiten Versuch der Text im Sheet Vokabel Spalte B NICHT gelöscht. Verstehe ich nicht!

Wie kann man per VBA feststellen das die Option statt auf "Blatt"auf "Arbeitsmape" eingestellt ist??
Mit dem Makrorecorder geht es nicht. Kann man das bei der Replace Methode als Option festlegen??

mfg Piet


Anzeige

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Find Option für ganze Arbeitmappe prüfen
01.12.2024 16:31:19
Onur
Hallo Piet,

Ich wollte es zuerst nicht gllauben, aber ....
Das ist eindeutig ein BUG - habe ich eben gemeldet.....

Gruß
Onur
AW: Workaround / Bugfix
02.12.2024 09:47:59
GerdL
Moin Piet,

zur Vermeidung des Ersetzens in allen Blättern -nach manuellem Suchen in der gesamten Arbeitsmappe-
kann man im Code die Find-Methode vorschalten.

Sub Unit()


Dim Vokabel As Worksheet, a As Range

Set Vokabel = Tabelle2
Set a = Vokabel.Columns(2).Find("d", LookIn:=xlValues, lookat:=xlPart)
Vokabel.Columns(2).Replace "d", "", xlPart

End Sub



Gruß Gerd
Anzeige
Das sagt...
02.12.2024 09:53:21
Case
Moin, :-)

... die KI: ;-)

Interessant, dass das Problem trotz der Angabe des Tabellenblattes auftritt. Das könnte tatsächlich ein Bug oder ein Eigenheit der Excel-Anwendung sein, wenn der letzte Modus des Dialogs („Durchsuchen: Arbeitsmappe“) die Replace-Methode beeinflusst. Um dies zuverlässig zu umgehen, könntest du Folgendes versuchen:
1. Expliziter Bezug zu einer Tabelle mit Range

Anstelle von Cells.Replace könnte die Verwendung eines expliziten Bereichs wie Range helfen:

ActiveSheet.Range("A1:Z1000").Replace What:="c", Replacement:="", LookAt:=xlPart


Falls der Bug bestehen bleibt, gehe zu Lösung 2.
2. Manuelle Wiederherstellung der Einstellung „Blatt“

Du kannst die Sucheinstellungen zurücksetzen, indem du über VBA den Suchbereich vorab explizit einschränkst. Ein einfacher Trick besteht darin, vor dem Ersetzen eine Suche mit einem begrenzten Bereich durchzuführen:

Dim tempRange As Range

Set tempRange = ActiveSheet.Cells.Find(What:="", LookIn:=xlValues)

' Jetzt das Ersetzen auf das aktive Blatt beschränken
ActiveSheet.Cells.Replace What:="c", Replacement:="", LookAt:=xlPart


Die Find-Methode setzt intern den Suchbereich zurück, was auch für Replace wirkt.
3. Force Reset durch Schleife über Arbeitsmappe

Falls der Bug weiterhin dazu führt, dass die gesamte Arbeitsmappe durchsucht wird, zwinge Excel durch eine Schleife, jedes Blatt explizit zu bearbeiten:

Dim ws As Worksheet


For Each ws In ThisWorkbook.Worksheets
ws.Cells.Replace What:="c", Replacement:="", LookAt:=xlPart
Next ws


Das sollte den Bug umgehen, da der Replace-Befehl hier explizit auf jedes Blatt angewandt wird.
4. Kompletter Rückgriff auf Application.FindFormat

Falls nichts davon funktioniert, könntest du in Kombination mit Find und Replace arbeiten und damit den Suchbereich programmgesteuert kontrollieren:

Dim tempCell As Range

Dim ws As Worksheet

For Each ws In ThisWorkbook.Worksheets
Set tempCell = ws.Cells.Find(What:="c", LookIn:=xlValues)
If Not tempCell Is Nothing Then
ws.Cells.Replace What:="c", Replacement:="", LookAt:=xlPart
End If
Next ws


Fazit:
Wenn der Bug mit der Einstellung des Suchbereichs („Durchsuchen: Arbeitsmappe“) das Verhalten beeinflusst, kann eine explizite Einschränkung oder ein Trick mit Find helfen. Probier diese Lösungen aus und melde gerne, ob sie den Bug umgehen können!

Servus
Case
Anzeige
AW: Find Option für ganze Arbeitmappe prüfen
03.12.2024 00:43:18
snb
Hier reicht schon:

Sub M_snb()

Cells.Find ""
Cells.Replace "snb_000", "snb_001"
End Sub

AW: Das sagt...
02.12.2024 09:57:19
Onur
"Das sollte den Bug umgehen, da der Replace-Befehl hier explizit auf jedes Blatt angewandt wird. "?
Und genau DAS soll ja NICHT passieren.
Anzeige
AW: Das sagt...
02.12.2024 10:03:51
Onur
Offensichtlich nimmt Replace IMMER die "Durchsuchen"-Einstellungen von der letzten Benutzung des Find-Befehls, egal was man Replace für Einstellungen mitgibt.
AW: Das sagt...
02.12.2024 17:29:49
Üiet
Hallo Kollegen

ich danke euch allen herzlich für die umfangreichen Antworten, habe was dazu gelernt.
Ich hätte mir auch nie träumen lassen das ich mal auf so einen BUG Effekt stoßen werde.

Man sieht, man lernt bei Excel nie aus. Offenbar übernimmt Replace also alle Find Einstellungen.
Nun gut, jetzt wo ich es weiß kann ich damit umgehen. Meisterns suche ich ja nur in einem Sheet!
Danke nochmal für euren guten Tipps. Und bald ein frohes Weihnachtsfest in die Heimat ...

mfg Piet
Anzeige
AW: Find Option für ganze Arbeitmappe prüfen
01.12.2024 20:13:18
Piet
Hallo Onur

was ist ein BUG? Damit kenne ich mich nicht aus. Ein technischer Fehler von MS?
Schade das man die Find Option Einstellung nicht auslesen kann. Habe bei Google nichts gefunden.

mfg Piet
AW: Find Option für ganze Arbeitmappe prüfen
02.12.2024 00:03:37
Georgi
Hallo Piet,
ja, als Bug wird u.a. auch ein Programm- oder Softwarefehler bezeichnet.
Wobei es sich dabei nicht zwingend um einen Ablauf- / Programmfehler handeln muss (das Programm läuft sauber durch), sondern es kann auch ein "Zustand" sein, der beim Programmieren nicht bedacht / berücksichtigt wurde (Programmierfehler).

Viele Grüße
Georgi
Anzeige

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige