Excel 仅更改单元格中字符串的特定部分,保持静止不变

Excel 仅更改单元格中字符串的特定部分,保持静止不变,excel,vba,replace,Excel,Vba,Replace,从单元格中获取一个值,如果单元格中有“show”,则将其替换为“change”。 单元格有多种颜色,我必须保留所有单词的颜色(show除外) 下面是一个示例代码,它将在不改变文本其他部分的当前颜色或其他字体属性的情况下更改文本。我将字体颜色的示例文本字符串放入单元格A1中 Public Sub test() Dim str As String, pos As Long str = Range("A1").Value pos = InStr(str, "show") Range(

从单元格中获取一个值,如果单元格中有“show”,则将其替换为“change”。 单元格有多种颜色,我必须保留所有单词的颜色(show除外)


下面是一个示例代码,它将在不改变文本其他部分的当前颜色或其他字体属性的情况下更改文本。我将字体颜色的示例文本字符串放入单元格A1中

Public Sub test()
  Dim str As String, pos As Long
  str = Range("A1").Value
  pos = InStr(str, "show")
  Range("A1").Characters(pos, 4).Insert ("change")
End Sub

请注意Characters().Insert()行的重要方面。字符(开始,长度)是您要删除的部分和大小,插入操作会将新的(和更长的)文本放回原处。

如果我在单元格有字符串且字符串已从文件(二进制访问)中复制时尝试相同的方法-现在此方法不起作用,为什么?
' want to replace “show” to “change” and keep the text coloring.
' similarly I can set the color with
Cells(row, col).Characters(15, Len(show)).Font.Color = vbBlue
' Can I change the text in a similar way?
' If I use:
Cells(row, col).value = text
' All color is gone!
Public Sub test()
  Dim str As String, pos As Long
  str = Range("A1").Value
  pos = InStr(str, "show")
  Range("A1").Characters(pos, 4).Insert ("change")
End Sub