kostenloser Webspace werbefrei: lima-city


[Excel] Problem mit Makro

lima-cityForumHeim-PCSoftware

  1. Autor dieses Themas

    vb1185700

    vb1185700 hat kostenlosen Webspace.

    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?
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. mein-wunschname

    mein-wunschname hat kostenlosen Webspace.

    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.
  4. airfield-manager

    Kostenloser Webspace von airfield-manager

    airfield-manager hat kostenlosen Webspace.

    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
  5. autonomestrading

    Kostenloser Webspace von autonomestrading

    autonomestrading hat kostenlosen Webspace.

    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
  6. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!