05.01.2018, 20:03 (Dieser Beitrag wurde zuletzt bearbeitet: 05.01.2018, 20:03 von Klaus-Dieter.)
Hallo,
versuche es mal damit:
Code:
Sub wechseln() Dim c As Range Dim firstadress As String With Tabelle1.Range("B15:B33") ' Bereich anpassen Set c = .Find("BKK Deutsche_BKK", LookIn:=xlValues, LookAt:=xlWhole) If Not c Is Nothing Then firstAddress = c.Address Do If CDate(Tabelle1.Cells(c.Row, 10)) > "31.12.2016" Then Tabelle1.Cells(c.Row, 2) = "Barmer" Set c = .FindNext(c) Loop While Not c Is Nothing And c.Address <> firstAddress End If End With End Sub
Viele Grüße Klaus-Dieter Der Erfolg hat viele Väter, der Misserfolg ist ein Waisenkind Richard Cobden
na ja, dein Datenbereich beginnt ja auch erst in Zeile 15 und nicht in Zeile 2. Dadurch, dass du aber Zeile 2 als Beginn der Range drin hattest, läuft der Code bei der Prüfung des Datums in Zeile 14 Spalte J auf den Texteintrag "Aufnahme" und somit in einen Fehler.
Code:
Public Sub Ersetzen_Deutsche_BKK_ab_1_1_2017() Dim loLetzte As Long, raBereich As Range, raZelle As Range Application.ScreenUpdating = False With Worksheets("Entl") 'Tabellennamen anpassen loLetzte = .Cells(.Rows.Count, 10).End(xlUp).Row Set raBereich = .Range(.Cells(15, 10), .Cells(loLetzte, 10)) For Each raZelle In raBereich If CDate(raZelle) > "31.12.2016" Then raZelle.Offset(, -8).Replace What:="BKK Deutsche_BKK", Replacement:="Barmer", LookAt:=xlPart End If Next raZelle End With Set raBereich = Nothing Application.ScreenUpdating = True End Sub