- 1、本文档共5页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
用VBA验证身份证号码的正确性
图 1 程序界面
编程语言
PROGRAM LANGUAGE
用 VBA 验证身份证号码的正确性
洪成波
张贻忠
摘 要:
否合法、
关键词:
用 Excel VBA 编写一段程序, 来验证身份证号码位数是否为 18 位 (二代要求)、 字符是
号码是否正确, 从而达到身份证号码自动验证, 去掉打印核对环节, 提高工作效率。
身份证号码;
Excel VBA;
正确性。
Y: 0 1 2 3 4 5 6 7 8 9 10 (共 11 个数字)
对应的校验码为: 1 0 X 9 8 7 6 5 4 3 2 (共 11 个数字)
根据以上规则, 就可以编写一个程序来验证身份证号码是 否正确了。
身份证号码规则
号码的结构
公民身份号码是特征组合码, 由十七位数字本体码和一位
1
1.1
校验码组成。 排列顺序从左至右依次为:
2 设计思路
在 Excel 中只用一个工作表录入个人信息, 编写一个验证 身份证号码位数是否为 18 位 , 验证组成字符是否合法有效
(0、 1、 2、 3、 4、 5、 6、 7、 8、 9、 X), 验证号码是否正确的 程序, 并通过自定义下拉菜单 “验证身份证号” 完成验证。
地 址 码
(1~6 位 ) : 表示编码对象常住户口所在县 ( 市 、
旗、 区) 的行政区划代码, 按 GB/T2260 的规定执行。
出 生 日 期 码 ( 7 ~14 位 ) : 表示编码对象出生的年 、 月 、 日, 按 GB/T7408 的规定执行, 年、 月、 日代码之间不用分隔 符。
顺序码
(15~17 位) :
表示在同一地址码所标识的区域 范
制作方法
3
围内, 对同年、 同月、 同日出生的人编定的顺序号, 顺序码的
奇数分配给男性, 偶数分配给女性。
校验码 (第 18 位)。
1.2 校验码如何得到
(1) 十七位数字本体码乘以加权求和 (如表 1 所示)。
表 1 身份证号的位权值
(1) 新建 Excel 文件, 将 sheet1 工作表重命名为 “验证身
份证号码的正确性”, 删除 sheet2、 sheet3 工作表。
(2) 录入 (或导入) 待验证的有身份证号码的信息。
(3) 如果是录入信息 , 由于二代身份证号码为 18 位, 超 出了 11 位 (常规单元格格式会自动将超过 11 位的数字转化为 科学技术), 因此录入前必须将整个工作表单元格数据类型设 置为文本型, 之后在录入。 录入时第 1 行作为标题行, 输入字 段名, 以下各行录入信息记录。 录入结束后, 为了操作上的需 要, 可冻结第 1 行 (如选定 E2 后选定冻结窗口), 给标题行填 充单元格底色 (如茶色), 给有记录的单元格添加框线 , 设置 字体、 字号、 字色等。 如果是导入信息 , 以上过程自动完成 , 如图 1 所示。
公式为: S = ∑ (sum (Ai * Wi)) i = 1,…,17
Ai:表示第 i 位置上的身份证号码数字值 (共 17 个)
Wi: 表 示 第 i 位 置 上 的 加 权 因 子: 7 9 10 5 8 4 2 1 6 3 7 9
10 5 8 4 2 (共 17 个)
(2) 计算余数。
Y = S mod 11 (对求和结果除以 11 求余数)
(3) 通过余数得到对应的校验码, 如表 2 所示。
表 2 校验码对照表
余数 Y
0
1
2
3
4
5
6
7
8
9
10
校验码
1
0
X
9
8
7
6
5
4
3
2
位置
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
和
加权
7
9
10
5
8
4
2
1
6
3
7
9
10
5
8
4
2
举例
1
3
0
1
0
2
1
9
6
3
0
7
0
4
0
6
5
乘积
7
27
0
5
0
8
2
9
36
9
0
63
0
20
0
24
10
220
图 2 录制宏
图 3 程序结构
(4) 通过录制宏插入 模 块 , 确 定 宏 名 称 ,
式, 然后在该模块内编写代码, 如图 2 所示。
并 添 加 快 捷 方
CommandBars(1).Controls(【导入信息】).Delete
CommandBars(1).Controls(【验证身份证号】).Delete
CommandBars(1).Controls(【关闭程序】).Delete
利用 ID 属性查找帮助菜单
Set HelpMenu = CommandBars(1).FindControl(ID:=30010)
如果该菜单不存在,
文档评论(0)