Private Sub Command1_Click()
If Len(Text1.Text) = 15 Then
Sfz15
ElseIf Len(Text1.Text) = 18 Then Sfz18
Else
MsgBox "身份证号位数不正确!"
Exit Sub
End If
End Sub
Public Sub Sfz18()
Dim Jym1 As Integer, Jym2 As String
'下面检验校验码是否正确
Sfzh = Text1.Text
Jym1 = Val(Mid(Sfzh, 1, 1)) * 7 + Val(Mid(Sfzh, 2, 1)) * 9 _
+ Val(Mid(Sfzh, 3, 1)) * 10 + Val(Mid(Sfzh, 4, 1)) * 5 _
+ Val(Mid(Sfzh, 5, 1)) * 8 + Val(Mid(Sfzh, 6, 1)) * 4 _
+ Val(Mid(Sfzh, 7, 1)) * 2 + Val(Mid(Sfzh, 8, 1)) * 1 _
+ Val(Mid(Sfzh, 9, 1)) * 6 + Val(Mid(Sfzh, 10, 1)) * 3 _
+ Val(Mid(Sfzh, 11, 1)) * 7 + Val(Mid(Sfzh, 12, 1)) * 9 _
+ Val(Mid(Sfzh, 13, 1)) * 10 + Val(Mid(Sfzh, 14, 1)) * 5 _
+ Val(Mid(Sfzh, 15, 1)) * 8 + Val(Mid(Sfzh, 16, 1)) * 4 _
+ Val(Mid(Sfzh, 17, 1)) * 2
Jym1 = Jym1 Mod 11
If Jym1 = 1 Then
Jym2 = 0
ElseIf Jym1 = 0 Then Jym2 = 1
ElseIf Jym1 = 2 Then Jym2 = "x"
Else
Jym2 = 12 - Jym1
End If
If Jym2 <> Mid(Sfzh, 18, 1) Then
MsgBox "这不是一个有效的身份证号!"
Exit Sub
End If
'下面检验出生日期是否正确
Jym2 = Mid(Text1.Text, 7, 4) & "-" & Mid(Text1.Text, 11, 2) & "-" & Mid(Text1.Text, 13, 2)
If Not IsDate(Jym2) Then
MsgBox "这不是一个有效的身份证号!"
Exit Sub
End If
MsgBox "这是一个有效的身份证号!"
End Sub
Public Sub Sfz15()
Dim Jym2 As String
'下面检验出生日期是否正确
Jym2 = Mid(Text1.Text, 7, 2) & "-" & Mid(Text1.Text, 9, 2) & "-" & Mid(Text1.Text, 11, 2)
If Not IsDate(Jym2) Then
MsgBox "这不是一个有效的身份证号!"
Exit Sub
End If
MsgBox "这是一个有效的身份证号!"
End Sub
请参阅我的博客:
http://hi.baidu.com/zgmg/blog/item/051ba235714ee00b91ef3943.html?timeStamp=1311164718265