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

Selection.Replace

Forumthread: Selection.Replace

Selection.Replace
08.01.2004 16:28:08
Holger
Hallo,
gibt es eine Möglichkeit, in dem Befehl selection.replace die Werte für what und replacement variabel zu gestalten?
Im Beispiel (ist nur ein Ausschnitt aus dem ganzen Befehl) wird der Begriff Wert durch Test ersetzt. Wenn ich diesen Befehl jedoch noch einmal anwende, so funzt er nicht, da in den betreffenden Zellen nun Test steht.
Habt Ihr eine Idee???
Selection.Replace What:="Wert", Replacement:="Test"
Gruß, Holger
Anzeige

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Selection.Replace
08.01.2004 21:05:22
Volker Croll
Hallo Holger,
ohne den Zusammenhang zu kennen, stochert man immer etwas im Nebel. Aber natuerlich kannst Du anstelle von "Wert" bzw. "Test" Variablen verwenden, die Du immer wieder mit anderen Texten fuellst.
Ansonsten bitte etwas mehr Infos.
Gruss Volker
AW: Selection.Replace
09.01.2004 07:44:31
Holger
Hallo Volker,
mein Problem sieht wie folgt aus:

Sub Listenfeld2_BeiÄnderung()
Rows("15:21").Select
Selection.Replace What:=AlterWert, Replacement:=NeuerWert, LookAt:= _
xlPart, SearchOrder:=xlByRows, MatchCase:=False
End Sub

Bei einem Anklicken des Listenfeldes werden die Zeilen 15 bis 21 markiert und alles, was in den Zeilen als AlterWert vorkommt, durch NeuerWert ersetzt. Bis dahin ist es OK. Wähle ich nun allerdings wieder etwas Neues in dem Listenfeld aus, so funzt das Makro nicht mehr, da in den Zeilen nirgends mehr AlterWert steht. Deshalb meine Frage, ob ich diese Begriffe elegant durch Variable ersetzen kann.
Vielleicht kannst Du mir da weiter helfen??
Gruß, Holger
Anzeige
Vorschlag ...
09.01.2004 13:50:49
Volker Croll
Hallo Holger,
wie waers mit (wobei Du auf das "selecten" verzichten kannst):

Sub Listenfeld2_BeiÄnderung()
Rows("15:21").Replace What:=AlterWert, Replacement:=NeuerWert, LookAt:= _
xlPart, SearchOrder:=xlByRows, MatchCase:=False
AlterWert = NeuerWert
End Sub

Gruss Volker
Anzeige
AW: Vorschlag ...
09.01.2004 14:06:18
Holger
Hallo Volker,
die Idee mit AlterWert = NeuerWert ist OK, aber das Makro bricht bereits vorher ab (bei dem Befehl mit replace). Das Ganze funzt aber, wenn das Blatt nicht geschützt ist. Es muss also mit dem Befehl replace und dem Blattschutz zu tun haben.
Ich habe bei Herber mal ein wenig weiter geforscht und eine Sache gefunden, die mir geholfen hat. Vor dem Markieren der Zellen wird automatisch der Blattschutz aufgehoben, nach dem Ersetzen der Begriffe wieder aktiviert. Der Nutzer sieht dies nicht, und es funzt.
Vielen Dank für Deine Hilfe.
Gruß, Holger
Anzeige
;
Anzeige

Infobox / Tutorial

Variablen in Selection.Replace mit VBA nutzen


Schritt-für-Schritt-Anleitung

Um die Werte für What und Replacement in der Methode Selection.Replace variabel zu gestalten, kannst du die folgenden Schritte befolgen:

  1. Deklariere Deine Variablen: Lege Variablen für den alten und neuen Wert an. Zum Beispiel:

    Dim AlterWert As String
    Dim NeuerWert As String
  2. Setze die Werte: Weise den Variablen die gewünschten Werte zu.

    AlterWert = "Wert"
    NeuerWert = "Test"
  3. Verwende die Selection.Replace Methode: Integriere die Variablen in den Replace Befehl.

    Selection.Replace What:=AlterWert, Replacement:=NeuerWert, LookAt:=xlPart, SearchOrder:=xlByRows, MatchCase:=False
  4. Aktualisiere die Variablen: Nach dem Ersetzen kannst du AlterWert auf NeuerWert setzen, um zukünftige Ersetzungen zu ermöglichen.

    AlterWert = NeuerWert

Häufige Fehler und Lösungen

  1. Problem: Makro bricht ab, wenn kein AlterWert gefunden wird.

    • Lösung: Stelle sicher, dass AlterWert vor dem Replace Befehl existiert. Du kannst eine Fehlerbehandlung einbauen, um das Makro stabil zu halten.
  2. Problem: Blattschutz verhindert das Ersetzen.

    • Lösung: Hebe den Blattschutz vor dem Ersetzen auf und aktiviere ihn danach wieder. Beispiel:
      ActiveSheet.Unprotect
      Selection.Replace What:=AlterWert, Replacement:=NeuerWert, LookAt:=xlPart
      ActiveSheet.Protect

Alternative Methoden

  • Direktes Ersetzen ohne Selection: Du kannst auch die Methode Replace direkt auf einem Bereich anwenden, ohne die Zellen vorher auszuwählen.

    Rows("15:21").Replace What:=AlterWert, Replacement:=NeuerWert, LookAt:=xlPart
  • Verwendung von Find und Replace: Eine weitere Möglichkeit ist die Verwendung von Find in Kombination mit Replace, was mehr Kontrolle bietet.


Praktische Beispiele

Hier ist ein einfaches Beispiel, wie du die Selection.Replace Methode in einem VBA-Makro verwenden kannst:

Sub BeispielErsetzen()
    Dim AlterWert As String
    Dim NeuerWert As String

    AlterWert = "Alt"
    NeuerWert = "Neu"

    ActiveSheet.Unprotect
    Rows("1:10").Replace What:=AlterWert, Replacement:=NeuerWert, LookAt:=xlPart
    ActiveSheet.Protect
End Sub

Dieses Skript ersetzt alle Vorkommen von "Alt" in den Zeilen 1 bis 10 durch "Neu".


Tipps für Profis

  • Nutze Option Explicit: Dies hilft dir, Variablen zu deklarieren und reduziert Fehler in deinem Code.
  • Teste deine Makros in einer Kopie deiner Daten: Vermeide Datenverluste durch fehlerhafte Ersetzungen.
  • Verwende Debug.Print: Um den Wert von Variablen während der Ausführung zu überprüfen, kann Debug.Print nützlich sein.

FAQ: Häufige Fragen

1. Kann ich mehrere Werte in einer Zeile mit Selection.Replace ersetzen?
Ja, das ist möglich, aber du musst für jeden Wert einen eigenen Replace Befehl ausführen oder eine Schleife verwenden.

2. Was passiert, wenn ich LookAt:=xlWhole verwende?
Mit LookAt:=xlWhole sucht Excel nach dem exakten Wort. Wenn du nur Teile eines Wortes ersetzen möchtest, solltest du LookAt:=xlPart verwenden.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige