VBA之正则表达式(6)-- 设置音标格式

实例需求:数据保存在A列中,需要对其中音标部分进行下划线标注,如C列所示,匹配这样的非典型字符,正则表达式是最佳选择。
在这里插入图片描述
示例代码如下。

Sub RegExpDemo()
    Dim strTxt As String
    Dim objRegEx As Object, objMatch As Object
    Dim objMH As Object, c As Range
    Set objRegEx = CreateObject("vbscript.regexp")
    objRegEx.Pattern = "(\/.+?\/)"
    objRegEx.Global = True
    Columns(1).Font.Underline = xlUnderlineStyleNone
    For Each c In Range([A4], Cells(Rows.Count, "A").End(xlUp))
        strTxt = c.Value
        Set objMatch = objRegEx.Execute(strTxt)
        If objMatch.Count > 0 Then
            For Each objMH In objMatch
                strKey = objMH.submatches(0)
                istart = objMH.firstindex + 1
                c.Characters(istart, Len(strKey)).Font.Underline = xlUnderlineStyleSingle
            Next
        End If
    Next
    Set objMH = Nothing
    Set objMatch = Nothing
    Set objRegEx = Nothing
End Sub

【代码解析】
第5行代码使用后期绑定创建正则对象。
第6行代码指定正则匹配字符串,用于匹配音标部分,即两个“/”之间的部分,音标字符部分使用“.+?”非贪婪匹配模式。
第7行代码设置为全局搜索模式。
第8行代码清除第1列的下划线。
第9行代码第19行代码循环处理工作表中的数据。
第11行代码执行正则匹配,并将替换后的结果写入工作表中。
如果匹配成功,那么第13行到第17行代码使用For循环结构设置字符格式。
第14行代码获取匹配字符。
第15行代码获取匹配字符的位置,firstindex是从零开始编号的,所以需要加一。
第16行代码设置音标部分的下划线格式。
第20行到第22行代码释放系统资源。


相关博文链接:
VBA之正则表达式(1)-- 基础篇
VBA之正则表达式(2)-- 批量修改公式
VBA之正则表达式(3)-- 特殊公式计算
VBA之正则表达式(4)-- 提取日期和金额
VBA之正则表达式(5)-- 中文字符
VBA之正则表达式(6)-- 设置音标格式
VBA之正则表达式(7)-- 乾坤大挪移(数据整理)
VBA之正则表达式(8)-- 重复字符分组
VBA之正则表达式(9)-- 添加千分位(1/3)
VBA之正则表达式(10)-- 添加千分位(2/3)
VBA之正则表达式(11)-- 添加千分位(3/3)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值