Clever-Excel-Forum

Normale Version: VBA-Lösung für Suchen und Ersetzen (STRG+H)
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo Freunde,

das folgende aufgezeichnete Makro soll mir in Spalte F Einträge ersetzen (und dadurch Tipparbeit ersparen). In Listen, die in unregelmäßigen Abständen ergänzt werden, stehen in manchen Zeilen "erster Termin" bzw. "zweiter Termin". Der zweite bezieht sich generell auf das aktuelle Datum, der erste 10 Tage vom aktuellen Datum gerechnet in der Vergangenheit (=heute() bzw. =heute()-10)

Ich hatte nun zum Aufzeichnen gedacht, ich schreibe die beiden Formeln in Hilfszellen und vergebe Namen (Termin1 und Termin2), um diese als Suchkriterium zu benutzen. Allerdings weiß der Makrorekorder nicht, dass es sich um Namen handelt und ersetzt nur Text.

Code:
Sub Aktualisieren()
'
' Aktualisieren Makro
'

'
    Range("F:F").Replace What:="erster Termin", Replacement:="Termin1", LookAt:= _
        xlPart, SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
        ReplaceFormat:=False
    Range("F:F").Replace What:="zweiter Termin", Replacement:="Termin2", LookAt _
        :=xlPart, SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
        ReplaceFormat:=False
End Sub

Meine Fragen:

1. Brauche ich für mein Vorhaben die Hilfszellen überhaupt?
2. Wie lautet die Anweisung für Replacement?

Schon jetzt vielen Dank für eure Hilfe.
Hallo Günter

Ich bin nicht der VBA-Experte aber ich würde vermuten dass statt "Termin1" Range(Termin1) funktioniert.
(06.11.2014, 06:58)shift-del schrieb: [ -> ]Hallo Günter

Ich bin nicht der VBA-Experte aber ich würde vermuten dass statt "Termin1" Range(Termin1) funktioniert.

Hi Detlef,

ganz lieben Dank. Bei deinem Vorschlag fehlten lediglich die Anführungseichen. So hat's einwandfrei geklappt:

Code:
Replacement:=Range("Termin1")
Zitat:Bei deinem Vorschlag fehlten lediglich die Anführungseichen).
Das wäre dann mein nächster Vorschlag gewesen. :19:
Hi Günter,

sowas ginge auch:

Code:
Sub Aktualisieren()
  Range("F:F").Replace What:="erster Termin", Replacement:=Date - 10, LookAt:= _
      xlPart, SearchOrder:=xlByRows, MatchCase:=False
  Range("F:F").Replace What:="zweiter Termin", Replacement:=Date, LookAt _
      :=xlPart, SearchOrder:=xlByRows, MatchCase:=False
End Sub

Gruß Uwe
Hi Uwe,

auch dir ganz lieben Dank. Ich werde deinen Codevorschlag einbauen - ich erspare mir hier die Hilfszellen. Somit ist auch meine erste Frage erledigt.