Bug in Excel? Geht um replace funktion + mehrere Tab.blätter
25.11.2023 11:17:58
Frank Dreier
manchmal ist Excel wirklich schräg und unlogisch oder ich bin zu blöd.
Wenn man in Tabelle 1, Tabelle 2 und Tabelle 3 in A1 "Test" hineinschreibt und dann Tabelle 1 und 3 gleichzeitig auswählt (linke Maustaste und STRG gedrückt halten) und dann manuell "Test" durch "Task" ersetzt, ersetzt er sowohl in Tabelle 1 und Tabelle 3, wie gewünscht, "Test" durch "Task". Tabelle 2 bleibt "Test" in A1 stehen und bleibt unberührt. Soweit so gut.
Wenn man dies aber als Makro programmiert und abspielen lässt, ändert er nur die Tabelle, die fett angeklickt ist und die andere(n) Tabellen nicht! (wenn Du via Makro Tabelle 1 und 3 ansprichst, Code kommt gleich). Das heißt die manuelle Replacement Funktion scheint anders zu funktionieren als die "programmierte", sieht aber gleich aus.
Hier der Code zum Selektieren von Tabelle 1 und 3 und das ersetzen von "Test" zu "Task" (trotz selektion BEIDER Blätter ändert er nur "Test" in "Task" bei der angewählten, fetten, auf dem Bildschirm sichtbaren Tabelle, nicht in der anderen)
Sheets(Array(1, 3)).Select
Cells.Replace What:="Test", Replacement:="Task", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
Wenn man nun nur den Code:
Sheets(Array(1, 3)).Select
ablaufen lässt und dann manuell wieder "Test" durch "Task" ersetzt, ersetzt er das wieder in allen ausgewählten Tabellen, Tabelle 2 bleibt unberührt. Also die programmierte bzw. manuelle Auswahl von Tabellenblatt 1 und 3 scheint nicht das Problem zu sein sondern die Replacementfunktion.
Excel scheint via Makro wohl nur eins oder alle Tabellenblätter ändern zu können. Einzelne anselektierte Blätter sind zwar möglich mit
(Sheets(Array(1, 3)).Select ) aber nicht gleichzeitig änderbar. Sollte das so sein, ist das natürlich ein unfassbarer Bug, da ich gerade nur durch Zufall dieses Problem entdeckt habe. Das ist ja nun wirklich ein essentieller Baustein.
Ihr könnt das gerne mal ausprobieren! Als workaround muss ich nun jedes einzelne Tabellenblatt ansprechen (alle geht nicht), da z.B. in Tabellenblatt 2 die Replacementfunktion nicht ausgeführt werden soll. Das ist z.B. nötig, da in Tabellenblatt 2 700000 Datenreihen stehen stehen und diese nicht durchsucht werden sollen da das ewig dauert.
Wenn man nun Tabellenblatt 1, 3, 7, 12 benötigt, kann man das noch nicht mal mit einer Schleife programmieren (da Abstand von Tabelle zu Tabelle unterschiedlich) oder man muss die Tabellen so verschieben/anordnen in Excel, dass alle möglichst hintereinander stehen, dann kann man das Problem zumindest mit einer Schleife lösen. Das geht bei mir aber nicht, das die Tabellenanordnung in Excel einer Logik folgt.
Bin gespannt auf Eure Antworten.