Se você precisar substituí-lo pelo valor calculado, então:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Count = 1 Then
If Left(Target.Formula, 1) = "=" And IsNumeric(Intersect(Range("B1:F1000"), Target)) Then
Dim a As Variant
For Each a In Array("protagonist", "anotherNameToChange")
While InStr(1, Target.Formula, a, 1)
Target.Formula = Replace(Target.Formula, a, Evaluate(ThisWorkbook.Names(a).Value), , , 1)
Wend
Next
End If
End If
End Sub
Fará isso para todos os nomes na matriz também automaticamente conforme desejado ...
Se houver necessidade de fazer isso para cada nome, altere as seguintes linhas:
For Each a In Array("protagonist", "anotherNameToChange")
muda para:
For Each a In ThisWorkbook.Names
e
Target.Formula = Replace(Target.Formula, a, Evaluate(ThisWorkbook.Names(a).Value), , , 1)
para
Target.Formula = Replace(Target.Formula, a, Evaluate(a.Value), , , 1)
Apenas observe que isso não diferencia maiúsculas de minúsculas:)