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