第四章 正则表达式
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 贪婪模式与懒惰模式
我是云飞扬,职场财会人员,愿与大家分享表格制作和数据统计分析的技巧与方法,希望大家的工作更便捷,更轻松!