学习VBA,报表做到飞 第四章 正则表达式 4.13 正则表达式与变量结合

第四章 正则表达式

4.13 正则表达式与变量结合

有时候为了灵活的编写代码, 我们会把下一步要使用的正则表达式先赋值给变量,然后用变量给Pattern属性赋值,这样可以多次切换正则表达式,以期达到匹配内容多样化。

小程序:

把下表右列中的姓名与左列进行比对,对左列中没有的姓名进行标红。

钱大、赵二、王小虎

钱大、赵二、李三、王小虎

小明、小强,小李

小明、小花,小强,小李

Sub 姓名比对()

Dim reg As New RegExp

With reg

.Global = True

For Each dyg In Range("b1", Cells(Rows.Count, 2).End(xlUp))

.Pattern = "[一-龢]+"

Set jg = .Execute(dyg)

For Each ss In jg

.Pattern = ss

If Not .Test(dyg.offset(0, -1)) Then

起点 = ss.FirstIndex + 1

长度 = ss.Length

dyg.Characters(起点, 长度).Font.Color = 255

End If

Next

Next

End With

End Sub

在这个程序里,对B列单元格进行循环,每循环一个单元格,都会对Pattern属性赋值两次。第一次是"[一-龢]+",把B列单元格的姓名匹配出来,然后把匹配的结果分别作为正则表达式再次对Pattern属性赋值,检验这个结果在往左偏移1列的A列单元格里是否能够匹配。如果匹配不上,说明A列单元格不存在这个姓名,就会对它做标红处理。

往期精彩回顾:

学习VBA,报表做到飞 第四章 正则表达式 4.12 正则表达式与数组结合

学习VBA,报表做到飞 第四章 正则表达式 4.11 零宽断言

学习VBA,报表做到飞 第四章 正则表达式 4.10 贪婪模式与懒惰模式

我是云飞扬,职场财会人员,愿与大家分享表格制作和数据统计分析的技巧与方法,希望大家的工作更便捷,更轻松!