EXcel_VBA身份证号码验证
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
'身份证号码验证
Public Function identi_check(identitynum As String) '身份证号码验证
Dim jyw As Long
identi = Replace(identitynum, " ", "")
If (Len(identi) > 0 And Len(identi) < 15) Or Len(identi) > 18 Then
identi = "不正确,非15、18位"
ElseIf Len(identi) = 0 Then
identi = "不正确,为空"
ElseIf Len(identi) = 15 Then
j = 0
For i = 1 To 15
If Not Mid(identi, i, 1) Like "[0-9]" Then
j = j + 1
End If
Next i
If j > 0 Then
identi = "不正确,包含非数字"
ElseIf Val(Mid(identi, 9, 2)) > 12 Then
identi = "不正确,月份大于12"
ElseIf Val(Mid(identi, 11, 2)) > 31 Then
identi = "不正确,日期大于31"
'MsgBox identi
Else
identi = ""
End If
ElseIf Len(identi) = 18 Then
'For i = 1 To 17
jyw = (Mid(identi, 1, 1) * 7 + Mid(identi, 2, 1) * 9 + Mid(identi, 3, 1) * 10 _
+ Mid(identi, 4, 1) * 5 + Mid(identi, 5, 1) * 8 + Mid(identi, 6, 1) * 4 _
+ Mid(identi, 7, 1) * 2 + Mid(identi, 8, 1) * 1 + Mid(identi, 9, 1) * 6 + Mid(identi, 10, 1) * 3 _
+ Mid(identi, 11, 1) * 7 + Mid(identi, 12, 1) * 9 + Mid(identi, 13, 1) * 10 + Mid(identi, 14, 1) * 5 _
+ Mid(identi, 15, 1) * 8 + Mid(identi, 16, 1) * 4 + Mid(identi, 17, 1) * 2)
jyw = jyw Mod 11
yzm = Replace("1 0 X 9 8 7 6 5 4 3 2", " ", "")
If Mid(yzm, jyw + 1, 1) <> Mid(identi, 18, 1) Then
identi = "不正确"
Else
identi = ""
End If
'7 9 10 5 8 4
'2 1 6 3 7 9 10 5
'8 4 2
'Next i
End If
identi_check = identi
'MsgBox "yyy" & identi 'Return (identitynum) End Function