Perhaps this...
Private Sub Worksheet_Change(ByVal Target As Range)
Dim r As Excel.Range
Dim ChangedCell As Excel.Range
Dim StartPos As Long
On Error GoTo Catch
Application.EnableEvents = False
For Each ChangedCell In Intersect(Range("A10:C50"), Target)
With ChangedCell
If .Value <> vbNullString Then
For Each r In Sheet2.UsedRange.Columns(1).Cells
If r.Value <> vbNullString Then
If InStr(.Value, r.Value) > 0 Then
.Value = Replace(.Value, r.Value, r.Offset(, 1).Value)
.Characters(InStr(.Value, r.Offset(, 1).Value), 1).Font.Name = r.Offset(, 1).Font.Name
End If
End If
Next
End If
End With
Next
Catch:
Application.EnableEvents = True
End Sub
With the range 'A10:C50 edited as needed.
Bookmarks