vba:这些场景常用的正则表达式最好记住

教育   2025-01-06 07:02   辽宁  

点击蓝字 关注我

立即添加星标

每天学好教程


在使用VBA中的正则表达式时,需要先创建一个VBScript.RegExp对象,并设置其.Pattern属性为所需的正则表达式模式。然后可以使用.Test方法来测试字符串是否匹配模式,.Execute方法来获取匹配的集合,或者.Replace方法来进行文本替换。



在VBA中使用正则表达式可以极大地增强文本处理能力。

在使用VBA中的正则表达式时,需要先创建一个VBScript.RegExp对象,并设置其.Pattern属性为所需的正则表达式模式。然后可以使用.Test方法来测试字符串是否匹配模式,.Execute方法来获取匹配的集合,或者.Replace方法来进行文本替换。

以下是一些在VBA中正则表达式的常用场景及其示例:

数据验证:验证电子邮件地址:

Dim regex As Object, email As StringSet regex = CreateObject("VBScript.RegExp")email = "example@email.com"With regex    .Pattern = "\b[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,}\b"    .IgnoreCase = True    If .Test(email) Then        MsgBox "Valid email address."    Else        MsgBox "Invalid email address."    End IfEnd With

字符串提取:提取字符串中的电话号码:

Dim regex As Object, phoneNumber As StringSet regex = CreateObject("VBScript.RegExp")phoneNumber = "My phone number is 123-456-7890."With regex    .Pattern = "\b\d{3}-\d{3}-\d{4}\b"    If .Test(phoneNumber) Then        MsgBox .Execute(phoneNumber)(0)    End IfEnd With

字符串替换:将文本中的日期格式从mm/dd/yyyy替换为dd-mm-yyyy:

Dim regex As Object, text As StringSet regex = CreateObject("VBScript.RegExp")text = "The date is 12/31/2020."With regex    .Pattern = "(\d{2})/(\d{2})/(\d{4})"    text = .Replace(text, "$2-$1-$3")End WithMsgBox text

文本分割:使用正则表达式分割字符串中的日期和时间:

Dim regex As Object, dateTime As StringSet regex = CreateObject("VBScript.RegExp")dateTime = "2020-12-31 23:59:59"With regex    .Pattern = "(\d{4}-\d{2}-\d{2}) (\d{2}:\d{2}:\d{2})"    If .Test(dateTime) Then        Dim matches As Object        Set matches = .Execute(dateTime)        MsgBox "Date: " & matches(0).SubMatches(0& vbCrLf & "Time: " & matches(0).SubMatches(1)    End IfEnd With

搜索和查找:在工作表中查找特定的文本并高亮显示:

Dim regex As Object, cell As RangeSet regex = CreateObject("VBScript.RegExp")With regex    .Pattern = "specificText"    .IgnoreCase = True    For Each cell In ActiveSheet.UsedRange        If .Test(cell.Value) Then            cell.Interior.Color = RGB(2552550' Highlights the cell yellow        End If    Next cellEnd With

格式化文本:将工作表中的数字格式化为千分位分隔符:

Dim regex As Object, cell As RangeSet regex = CreateObject("VBScript.RegExp")With regex    .Pattern = "(\d)(?=(\d{3})+(?!\d))"    For Each cell In Selection        If IsNumeric(cell.Value) Then            cell.Value = .Replace(cell.Value, "$1,")        End If    Next cellEnd With

识别二维码

关注视频号

Excel

加油站

成为会员,享一对一服务

加入社群

长按

关注


立即添加星标

每天学好教程

左手Excel右手VBA
致力于传播Excel、VBA、Python知识,推广非IT编程。另提供表格代做,数据清洗,数据批处理,Excel菜单插件制作,工具开发,网页数据批量抓取等代工服务。官网:office.imitker.com
 最新文章