0 And Len(identi) 18 Thenidenti = "不正确,非" />

EXcel_VBA身份证号码验证

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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

相关文档
最新文档