Try this to store characters and fonts in array.
Example replaces "and" with "but" which are same length. Should be able to change for different length strings when taking into account the font array.
Option Explicit
Sub More_than_256()
Dim Cell As Range
Dim FontArray As Variant
Dim TextArray As Variant
Dim i As Long
Dim the_string As String
For Each Cell In Selection
ReDim FontArray(Len(Cell) - 1)
For i = 1 To Len(Cell)
FontArray(i - 1) = Cell.Characters(i, 1).Font.Name
Next
ReDim TextArray(Len(Cell) - 1)
For i = 1 To Len(Cell)
TextArray(i - 1) = Cell.Characters(i, 1).Text
Next
For i = 0 To Len(Cell) - 1
Cell.Characters(i + 1, 1).Text = TextArray(i)
Next i
the_string = Join(TextArray, "")
the_string = Replace(the_string, "and", "but")
Cell.Value = the_string
For i = 0 To Len(Cell) - 1
Cell.Characters(i + 1, 1).Font.Name = FontArray(i)
Next i
Next Cell
End Sub
Bookmarks