如何使用格式化文本查找和替换单元格的一部分

Sam*_*Sam 3 excel vba excel-2007 excel-vba

在Excel 2007电子表格中,我想查找 - 替换为突出显示单元格中文本的一部分.使用find-replace重新格式化整个单元格.

例如,如果单元格包含:

Pellentesque vel massa坐在amet magna eleifend placerat.Pellentesque dictum,nibh vitae tincidunt placerat,elit libero tristique tellus,vel imperdiet nulla tortor id diam.Mauris porta blandit vestibulum.

我想找到"Pellentesque"并用Pellentesque代替它.

这可以在没有VBE或公式的情况下完成吗?

pnu*_*uts 6

也许这适合(确保在运行之前不再选择不必要的单元格,否则这可能需要一段时间):

Sub FormatSelection()

Dim cl As Range
Dim SearchText As String
Dim StartPos As Integer
Dim EndPos As Integer
Dim TestPos As Integer
Dim TotalLen As Integer

On Error Resume Next
Application.DisplayAlerts = False
SearchText = Application.InputBox _
(Prompt:="Enter string.", Title:="Which string to format?", Type:=2)
On Error GoTo 0
Application.DisplayAlerts = True
If SearchText = "" Then
Exit Sub
Else
For Each cl In Selection
  TotalLen = Len(SearchText)
  StartPos = InStr(cl, SearchText)
  TestPos = 0
  Do While StartPos > TestPos
    With cl.Characters(StartPos, TotalLen).Font
      .FontStyle = "Bold"
      .ColorIndex = 3
    End With
    EndPos = StartPos + TotalLen
    TestPos = TestPos + EndPos
    StartPos = InStr(TestPos, cl, SearchText, vbTextCompare)
  Loop
Next cl
End If
End Sub
Run Code Online (Sandbox Code Playgroud)

应该加重红色.如果重新运行宏,则不会覆盖更改.注释掉.ColorIndex = 3如果不改变颜色.

(基于@Skip Intro指向SO15438731问题的修正案以及SO10455366的一些代码答案.)