如何在Excel VBA的UserForm中实现TextBox1的邮箱地址校验
Excel VBA 邮箱地址校验函数封装方案
完整封装代码
' 邮箱校验函数,传入文本框输入内容,返回布尔值表示是否校验通过 Function ValidateEmail(emailInput As String) As Boolean ValidateEmail = False ' 空值校验(保留你原有的逻辑) If Trim(emailInput) = "" Then MsgBox "Please enter email." Exit Function End If ' 后期绑定创建正则对象,无需提前引用类库,兼容性更强 Dim regObj As Object Set regObj = CreateObject("VBScript.RegExp") With regObj .IgnoreCase = True ' 邮箱不区分大小写,无需额外处理输入的大小写 .Pattern = "^[a-z0-9_.-]+@[a-z0-9.-]{2,}\.[a-z]{2,4}$" ' 你提供的正则规则 .Global = False End With ' 执行正则匹配 If regObj.Test(emailInput) Then ValidateEmail = True Else MsgBox "请输入符合格式要求的邮箱地址" End If ' 释放对象资源 Set regObj = Nothing End Function
调用方式
在你原有的校验逻辑位置直接调用即可,替换你之前的空值判断代码:
' 示例:在提交按钮点击事件/原有Validation函数中调用 Validation = ValidateEmail(.TextBox1.Value) If Validation = False Then Exit Function
可选调整说明
- 如果你已经在VBA编辑器的「工具-引用」中勾选了
Microsoft VBScript Regular Expressions 5.5,可以把正则对象声明改为Dim regObj As New RegExp,省略CreateObject步骤 - 当前正则规则限制顶级域名最长为4位,如果你需要支持
.online、.website这类长域名,可以把正则末尾的{2,4}修改为{2,}
内容的提问来源于stack exchange,提问作者Megumi
相关产品推荐
相关产品推荐

