删除子字符串但保留格式

Gar*_*ent 4 excel vba excel-vba

我有一小段代码将从我选择的单元格中删除子串垃圾:

Sub RemoveJunk()
    Dim r As Range
    For Each r In Selection
         r.Value = Replace(r.Value, "junk", "")
    Next r
End Sub
Run Code Online (Sandbox Code Playgroud)

代码有效,但它会破坏单元格中保留的字符的格式.所以,如果我开始:

在此输入图像描述

我最终得到:

在此输入图像描述



有没有办法避免干扰仍然存在的字符的格式?

GSe*_*erg 5

Sub RemovePreserveFormatting(ByVal Where As Range, Expression As String, Optional ByVal Compare As VbCompareMethod = VbCompareMethod.vbBinaryCompare)
  Dim c As Range

  For Each c In Where
    Dim pos As Long: pos = 0

    Do
      pos = InStr(pos + 1, c.Value, Expression, Compare)
      If pos = 0 Then Exit Do

      c.Characters(pos, Len(Expression)).Delete
    Loop
  Next

End Sub
Run Code Online (Sandbox Code Playgroud)