Excel高亮部分字符串

Sub subHighLightKeyText(ByRef objRg As Range, ByVal key$, ByRef colorValue&)
    Dim sh As Worksheet, str$, startPos%, setLen%, nextFindStart%, rg As Range

    setLen = VBA.Len(key)
    For Each rg In objRg
        str = rg.Text
        nextFindStart = 1
        startPos = VBA.InStr(nextFindStart, str, key, vbTextCompare)

        While startPos > 0
            rg.Characters(Start:=startPos, Length:=setLen).Font.Color = colorValue
            nextFindStart = startPos + setLen
            startPos = VBA.InStr(nextFindStart, str, key, vbTextCompare)
        Wend
    Next
End Sub

Sub setHighLightKeyText()
    Dim key$, ibRet, arr() As String, lColor&, rg As Range
    Dim str$

    str = "format:key,[highlightColor],[atRange]" & VBA.Chr(13) & VBA.Chr(10)
    str = str & "highlightColor:r->red, g->green, b->blue" & VBA.Chr(13) & VBA.Chr(10)
    str = str & "atRange:u->used range on current sheet, s->selected range on current sheet" & VBA.Chr(13) & VBA.Chr(10)
    str = str & "[highlightColor][atRange] can be omitted. Default value is used when omitted." & VBA.Chr(13) & VBA.Chr(10)
    str = str & "highlightColor default:r, atRange default:u" & VBA.Chr(13) & VBA.Chr(10) & VBA.Chr(13) & VBA.Chr(10)
    
    str = str & "example:mykey" & VBA.Chr(13) & VBA.Chr(10)
    str = str & "example:mykey,rb" & VBA.Chr(13) & VBA.Chr(10)
    str = str & "example:mykey,rb,s" & VBA.Chr(13) & VBA.Chr(10)
    str = str & "example:mykey,,s" & VBA.Chr(13) & VBA.Chr(10)
    
    'set default value
    Set rg = ActiveSheet.UsedRange
    lColor = VBA.RGB(255, 0, 0) 'red
    
    ibRet = VBA.InputBox(str, "input param", "")
    If ibRet = "" Then MsgBox "param err", vbCritical + vbOKOnly, "Error": Exit Sub
    arr = VBA.Split(ibRet, ",")

    If UBound(arr) >= 3 Then
        MsgBox "param count > 3", vbCritical + vbOKOnly, "Error": Exit Sub
    End If
    
    key = arr(0)
    If UBound(arr) >= 1 Then
        lColor = 0
        If VBA.InStr(1, arr(1), "r", vbTextCompare) > 0 Then
            lColor = lColor + VBA.RGB(255, 0, 0)
        End If
        If VBA.InStr(1, arr(1), "g", vbTextCompare) > 0 Then
            lColor = lColor + VBA.RGB(0, 255, 0)
        End If
        If VBA.InStr(1, arr(1), "b", vbTextCompare) > 0 Then
            lColor = lColor + VBA.RGB(0, 0, 255)
        End If
    End If
    If UBound(arr) >= 2 Then
        If arr(2) = "s" Then
            Set rg = Selection
        End If
    End If
    Call subHighLightKeyText(rg, key, lColor)
End Sub

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在Java中,要实现字符串的指定高亮显示,可以使用 `javax.swing.text.DefaultHighlighter` 类。该类提供了一组用于高亮显示文本的方法,包括通过指定起始位置和结束位置来高亮显示文本。 示例代码如下: ```java import javax.swing.text.DefaultHighlighter; import javax.swing.text.Highlighter; import javax.swing.text.Highlighter.HighlightPainter; import java.awt.Color; public class HighlightString { public static void main(String[] args) { String text = "这是需要高亮显示的文本。"; String highlightText = "高亮"; // 创建高亮显示器 Highlighter highlighter = new DefaultHighlighter(); // 创建高亮显示画笔 HighlightPainter painter = new DefaultHighlighter.DefaultHighlightPainter(Color.YELLOW); // 在文本中查找需要高亮显示的字符串 int index = text.indexOf(highlightText); while (index >= 0) { try { // 高亮显示找到的字符串 highlighter.addHighlight(index, index + highlightText.length(), painter); } catch (Exception e) { e.printStackTrace(); } // 继续查找 index = text.indexOf(highlightText, index + 1); } // 输出高亮显示后的文本 System.out.println("高亮显示后的文本:"); System.out.println(text); } } ``` 在上面的示例中,我们首先创建了一个文本字符串 `text` 和一个需要高亮显示的字符串 `highlightText`。然后,我们创建了一个 `DefaultHighlighter` 对象作为高亮显示器,以及一个 `DefaultHighlightPainter` 对象作为高亮显示画笔。 接下来,我们使用 `indexOf()` 方法在文本中查找需要高亮显示的字符串,并使用 `addHighlight()` 方法将其高亮显示。由于 `addHighlight()` 方法可能会抛出异常,因此我们使用了一个 try-catch 块来捕获异常并处理。 最后,我们输出高亮显示后的文本。可以看到,匹配的字符串已经被以黄色背景的形式高亮显示出来。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值