ExcelTip.Net留存知识帖 ---【注:附件之前被网盘供应商清空后,现已修复-现已修复-现已修复为本地下载!】
现在位置:首页 > E问E答 > Excel VBA > 如何用vba代码判断输入的身份证号码是否符合指定规则?

如何用vba代码判断输入的身份证号码是否符合指定规则?

作者:绿色风 分类: 时间:2022-08-17 浏览:135
楼主
kevinchengcw
Q: 如何用vba代码判断输入的身份证号码是否符合指定规则?
A: 规则如下:

利用工作表change事件判断即时输入内容代码如下:
  1. Private Sub Worksheet_Change(ByVal Target As Range)
  2. If Not Intersect(Target, [b2:b100]) Is Nothing Then  '判断是否处在需要判断的区域内,如果是,则
  3.     Dim Rng As Range, R As Range
  4.     With CreateObject("vbscript.regexp")  '创建正则,用于判断输入内容是否符合规则
  5.         .Global = True  '全局有效
  6.         .ignorecase = True  '忽略大小写
  7.         .Pattern = "([1-9]\d{9}(0[1-9]|1[0-2])(0[1-9]|[12]\d|3[01])\d{3}[0-9xX])|([1-9]\d{7}(0[1-9]|1[0-2])(0[1-9]|[12]\d|3[01])\d{3})"   '匹配规则(分18位与15位两段)
  8.         For Each Rng In Intersect(Target, [b2:b100])  '循环target中位于需要判断区域内的各个单元格
  9.             If Trim(Rng.Value) <> "" Then  '如果是有效数据则进行判断
  10.                 If .Replace(Trim(Rng.Value), "") <> "" Then  '如果单元格内容无法被匹配规则替换为空,则证明不符合匹配规则
  11.                     If R Is Nothing Then  '将不符合的单元格区域加入变量中,用于后面提示使用
  12.                         Set R = Rng
  13.                     Else
  14.                         Set R = Union(Rng, R)
  15.                     End If
  16.                 End If
  17.             End If
  18.         Next Rng
  19.     End With
  20.     If Not R Is Nothing Then MsgBox "The cell" & IIf(R.Cells.Count > 1, "s", "") & " below is error:" & vbNewLine & R.Address(0, 0)  '如果存在不符合区域,则进行提示
  21. End If
  22. End Sub

详见附件及素材源帖.
Example.rar
2楼
亡者天下
谢谢分享,学习了
3楼
yf_home
学习K哥代码。

免责声明

有感于原ExcelTip.Net留存知识的价值及部分知识具有的时间限定性因素, 经与ExcelTip.Net站长Apolloh商议并征得其同意, 现将原属ExcelTip.Net的知识帖采集资料于本站点进行展示, 供有需要的人士查询使用,也慰缅曾经的论坛时代。 所示各个帖子的原作者如对版权有异议, 可与本人沟通提出,或于本站点留言,我们会尽快处理。 在此,感谢ExcelTip.Net站长Apolloh的支持,感谢本站点所有人**绿色风(QQ:79664738)**的支持与奉献,特此鸣谢!
------本人网名**KevinChengCW(QQ:1210618015)**原ExcelTip.Net总版主之一

评论列表
sitemap