之前在知乎写的回答,想把代码分享给公司的同事,但公司的电脑只能上技术论坛,不能上知乎,所以转载到这里。
Sub 替换选中区域指定文字颜色() Dim MyStr As String '要设置颜色的文本 Dim MyColor As Long '要设置的颜色 Dim MyLen As Integer '要设置颜色的文本的长度 Dim arr() As Integer '存放文本串中文本的起始位置 Dim n As Integer '指定数组个数 Dim MyStart As Integer '存放各位置变量 MyStr = InputBox("请输入要修改颜色的文本:") MyColor = GetColor MyLen = Len(MyStr) For Each rg In Selection n = 1 ReDim arr(1 To n) arr(1) = 0 Do While InStr(arr(n) + 1, rg.Value, MyStr) > 0 MyStart = InStr(arr(n) + 1, rg.Value, MyStr) n = n + 1 ReDim Preserve arr(1 To n) arr(n) = MyStart Loop If n > 1 Then For i = 2 To n rg.Characters(Start:=arr(i), Length:=MyLen).Font.Color = MyColor Next i End If Next rg End Sub Function GetColor() a = ActiveWorkbook.Colors(1) Application.Dialogs(xlDialogEditColor).Show (1) B = ActiveWorkbook.Colors(1) ActiveWorkbook.Colors(1) = a GetColor = B End Function 使用时先选中指定区域,再运行宏(可指定快捷键) 然后输入要修改颜色的文字,选择要修改的颜色
浙公网安备 33010602011771号