15位身份证号转换18位VB程序代码

[复制链接]
查看11 | 回复2 | 2008-4-16 18:59:23 | 显示全部楼层 |阅读模式
设text1用来输入15位身份证,text2用来输出18位身份证,command1按钮开始转换:Private Sub Command1_Click()Dim t As Long, s As StringIf Len(Text1.Text)15 Then
MsgBox "请输入15位身份证号!"
Exit SubEnd IfIf Not IsNumeric(Text1.Text) Then
MsgBox "请输入数字"
Exit SubEnd IfIf Val(Mid(Text1.Text, 9, 2)) > 12 Or Val(Mid(Text1.Text, 9, 2)) = 0 Or _
Val(Mid(Text1.Text, 11, 2)) > 31 Or Val(Mid(Text1.Text, 9, 2)) = 0 Then
MsgBox "身份证格式错误"
Exit SubEnd Ift = (Val(Mid(Text1.Text, 1, 1)) * 7 + Val(Mid(Text1.Text, 2, 1)) * 9 + _
Val(Mid(Text1.Text, 3, 1)) * 10 + Val(Mid(Text1.Text, 4, 1)) * 5 + _
Val(Mid(Text1.Text, 5, 1)) * 8 + Val(Mid(Text1.Text, 6, 1)) * 4 + _
Val(Mid(Text1.Text, 7, 1)) * 6 + Val(Mid(Text1.Text, 8, 1)) * 3 + _
Val(Mid(Text1.Text, 9, 1)) * 7 + Val(Mid(Text1.Text, 10, 1)) * 9 + _
Val(Mid(Text1.Text, 11, 1)) * 10 + Val(Mid(Text1.Text, 12, 1)) * 5 + _
Val(Mid(Text1.Text, 13, 1)) * 8 + Val(Mid(Text1.Text, 14, 1)) * 4 + _
Val(Mid(Text1.Text, 15, 1)) * 2 + 1 * 2 + 9 * 1) Mod 11s = Mid("10X98765432", t + 1, 1)Text2.Text = Mid(Text1.Text, 1, 6) + "19" + Mid(Text1.Text, 7, 9) + sEnd Sub注:这里转换的身份证号都是2000年以前的,估计2000年以后的身份证没有15位的了吧!
回复

使用道具 举报

千问 | 2008-4-16 18:59:23 | 显示全部楼层
我知道15位转化18位,最后随机的....你的要求太难了...等待高手~~
回复

使用道具 举报

千问 | 2008-4-16 18:59:23 | 显示全部楼层
ISO 7064:1983.MOD 11-2校验码具体点是什么啊
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行