Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

VBA - Suchen und Ersetzen
#1
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
Antworten Top
#2
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
Antworten Top
#3
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
[-] Folgende(r) 1 Nutzer sagt Danke an Werner.M für diesen Beitrag:
  • EasY
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste