Clever-Excel-Forum

Normale Version: VBA - Suchen und Ersetzen
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hi...

ich benötige erneut eure Hilfe ...

Ich möchte mit VBA eine Spalte mehrfach nach einer Zahl absuchen und diese dann ersetzen. Mein Code sieht wiefolgt aus, tut jedoch nicht, was ich möchte:


Code:
Sub Suchen_Ersetzen()    

Dim n as integer
Dim Suchzelle as range

For n = 1 To (ThisWorkbook.ActiveSheet.Cells(Zeile_Position + 1, Spalte_Position + 2).Value - ThisWorkbook.Sheets("Zwischenspeicher").Range("H1").Value)
      Set Suchzelle = ThisWorkbook.Sheets("Zwischenspeicher").Columns(4).Find("5")
      ThisWorkbook.Sheets("Zwischenspeicher").Cells(Suchzelle, 4).Value = 3
      Set Suchzelle = Nothing
   Next n

End sub


Zu Erklärung vll noch: Das Makro wird mit einem Button ausgelöst und befindet sich mehrfach auf dem Blatt. Immer "rechts unter dem Button" befindet sich eine individuelle Zahl. Von dieser wird eine statische Zahl abgezogen. Damit berechne ich die Anzahl der For-Next-Durchläufe.

Irgendwas stimmt allerdings mit dem Code nicht ... er sucht einmal korrekt eine 5, danach jedoch nicht mehr.


Hoffe ihr könnt mir helfen
Hallo,

mal ne bescheidene Frage:
Warum willst du eine Spalte mehrfach nach einer Zahl durchsuchen?

Deinem Codebeispiel nach suchst du in Spalte D nach der Zahl 5 und willst die durch die Zahl 3 ersetzen.

Wobei du nicht nach einer Zahl suchst sondern nach dem Text 5, weil du die 5 in Gänsefüßchen stehen hast "5".
Zudem sollte man bei Find immer auch die Parameter LookIn und LookAt mit angeben, da Excel diese Parameter anhand der letzten Suche mit abspeichert und du deshalb (wenn du sie nicht mit angibst) u.U. falsche Ergebnisse bekommst.

Warum nicht einfach mit Replace?

Code:
Public Sub Ersetzen()
'Blattname anpassen
Worksheets("Tabelle1").Columns(4).Replace what:=5, Replacement:=3
End Sub

Gruß Werner
Hallo,

mal mit deinem Makro (geändert), ausgehend davon, dass du in Werten (Value) suchst und nicht in einem Formeltext und dass die Zahl alleine in der Zelle steht.

Code:
Sub Suchen_Ersetzen()
Dim n As Long, Suchzelle As Range

For n = 1 To ThisWorkbook.ActiveSheet.Cells(Zeile_Position + 1, Spalte_Position + 2).Value - ThisWorkbook.Sheets("Zwischenspeicher").Range("H1").Value
   Set Suchzelle = ThisWorkbook.Sheets("Zwischenspeicher").Columns(4).Find(what:=5, LookAt:=xlValues, LookIn:=xlWhole)
   If Not Suchzelle Is Nothing Then
       ThisWorkbook.Sheets("Zwischenspeicher").Cells(Suchzelle, 4).Value = 3
   End If
Next n

Set Suchzelle = Nothing
End Sub
Gruß Werner