[Excel] Problem mit Makro
lima-city → Forum → Heim-PC → Software
anzahl
array
begriff
beispiel
chip
code
editor
ersetzen
forum
http
liste
nutzen
problem
profi
rang
suchbegriff
suchen
test
text
zeile
-
Hallo,
ich möchte ein Makro nutzen um eine Vielzahl von Ausdrücken zu ersetzen. Das ganze läuft über den Visual Basic Editor gemäß dieses Codes
---------------------------------------------------------------------------------------------------
Sub mehrfachSuchenUndErsetzen()
'sucht im aktiven Tabellenblatt jeweils die Eintraege aus
'suchArray und ersetzt mit ersetzArray
'09-2006
'E.Bimczok http://profi-excel.de
Dim suchArray()
Dim ersetzArray()
Dim k As Long
suchArray = Array("a", "b", "c")
ersetzArray = Array("1", "2", "3")
For k = LBound(suchArray) To UBound(suchArray)
Call ActiveSheet.UsedRange.Replace(suchArray(k), _
ersetzArray(k), _
, _
, _
False)
Next k
End Sub
---------------------------------------------------------------------------------------------------
Von dieser Seite: http://forum.chip.de/office/excel-suchen-ersetzen-mehrerer-begriffe-gleichzeitig-1066460.html
Scheinbar überfordere ich den Editor mit der Anzahl der zu suchenden Begriffe, denn ich bekomme immer folgenden Fehler:
Erwartet: Zeilennummer oder Sprungmarke oder Anweisung oder Anweisungsende
Hab durch etliches Veruschen festgestellt, dass es an der Anzahl oder Länge liegen muss, denn wenn ich "a", "b", "c" so oft kopiere und einsetze bis etwas mehr als zwei Zeilen voll sind, kommt der selbe Fehler.
Wenn ich meine Suche auf ca. 88-90 Begriffe beschränke funktioniert alles, nur ich hab ein paar Tausend Begriffe und keinen Bock das ganze in hunderte Scripts zu splitten.
Gibt es eine Lösung für mein Problem? -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Aus deinem Post kann man leider nicht erkennen, inwiefern du das Makro nach deinen Bedürfnissen angepasst hast. In der einfachen Form nach dem Beispiel auf http://forum.chip.de/office/excel-suchen-ersetzen-mehrerer-begriffe-gleichzeitig-1066460.html funktioniert es ja.
Möglicherweise hat das von dir beschriebene Problem ja mit Begrenzungen dieser Art
https://msdn.microsoft.com/de-de/library/wdzat713.aspx
zu tun (insbes. Zeilenlänge, Arraydimensionen) genaue Angaben zu den einzelnen VBA-Versionen der unterschiedlichen Excelausgaben finde ich leider nicht.
Hier
http://www.office-loesung.de/ftopic632894_0_0_asc.php
wird auch ein Problem beim Suchen/Ersetzen von großen Datenmengen beschrieben. Vllt. helfen dir die Ansätze dort weiter. -
Hast du deine Such und Ersetzbegriffe alle Hard codiert im Array des Programmcode selber?
Wieso legst du dir nicht ein Tabellenblatt an mit deinen Suchbegriffen und Ersatzwerten und gehst dann diese Liste Zeile für Zeile durch?
EDIT hier noch ein Codebeispiel für meine Idee ;)
Sub mehrfachSuchenUndErsetzen() 'sucht im aktiven Tabellenblatt jeweils die Eintraege aus 'suchArray und ersetzt mit ersetzArray '09-2006 'E.Bimczok http://profi-excel.de Dim suchArray() Dim ersetzArray() Dim k As Long Dim Sucheintraege As Long Sucheintraege = Worksheets("Liste").Cells(Rows.Count, 1).End(xlUp).Row 'Sofern im Tabellenblatt Liste die Suchbegriffe stehen For k = 1 To Sucheintraege Call ActiveSheet.UsedRange.Replace(Worksheets("Liste").Range("A" & k).Value, _ Worksheets("Liste").Range("B" & k).Value, _ , _ , _ False) Next k End Sub
Beitrag zuletzt geändert: 19.5.2017 19:37:25 von airfield-manager -
Probiers mal mit diesem Beispiel:
es wird in Spalte B alles was "test" ist durch "text" ersetzt.
Sub Ersetzen() Columns("B:B").Select Selection.Replace What:="test", Replacement:="text", LookAt:=xlPart, _ SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _ ReplaceFormat:=False End Sub
Danach baust Du Dir eine For Next Schleife indem die Such und Ersetz Begriffe auf den Columns durchgezählt werden.
Sub Makro2() Dim suchArray() Dim ersetzArray() suchArray = Array("a", "b", "c") ersetzArray = Array("1", "2", "3") For k = LBound(suchArray) To UBound(suchArray) colie = "B" & k & ":B" & k + 1 Columns(colie).Select Selection.Replace What:=suchArray.k, Replacement:=ersetzArray.k, LookAt:=xlPart, _ SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _ ReplaceFormat:=False Next k End Sub
Beitrag zuletzt geändert: 19.5.2017 19:46:07 von autonomestrading -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage