近几日,我的工作是录入更正的农业直补农户资料,涉及到了各包村干部上报的各种样式的报表,经会计清点后,由我来统一按上报的格式来摘抄到上报表中。据会计说,我的字写得还过得去,比小代强。
  我建议用计算机来处理,打字比写字可快多了,还清楚。
  下面的工作,就是录入一大堆的编号和身份证号以及姓名。姓名不是难事,在录入几十个后,我越发的想去上网,把读霸安装上,我打它来读,这样就不用抬头看屏幕了。想到乡里网吧的半个小时打开一封邮件的速度呀,我还是放弃了。
  身份证可是不能再错误了,幸好我的电子书里有一段关于身份证格式的说明和程序,在稍加修改后,它已经可以用来批量的判断身份证是不是有格式(包括长度,出生年月,验证位)的错误。
  本想通过数据有效性来作,只是公式里不能调用VBA的函数,真是郁闷。
 
  下次有机会,改写一个公式来判断的。
 
 
在Excel中检验身份证号Sub 检验选定区域身份证()
在Excel中检验身份证号
'
在Excel中检验身份证号'
 检验身份证 Macro
在Excel中检验身份证号'
 用于检测身份证号码是否正确
在Excel中检验身份证号'
在Excel中检验身份证号'
 快捷键: Ctrl+q
在Excel中检验身份证号'
在Excel中检验身份证号
Dim arange As range
在Excel中检验身份证号
Dim acell As range
在Excel中检验身份证号
Dim ret As Integer
在Excel中检验身份证号
Set arange = Selection
在Excel中检验身份证号
For Each acell In arange.Cells
在Excel中检验身份证号  
'MsgBox ActiveCell.Text
在Excel中检验身份证号
    ret = IDCheck(UCase(acell.Text))
在Excel中检验身份证号    
If ret <> 0 Then
在Excel中检验身份证号        acell.Select
在Excel中检验身份证号        
MsgBox "请检查当前选定单元格的身份证是否正确", , "提示"
在Excel中检验身份证号        
Exit Sub
在Excel中检验身份证号    
End If
在Excel中检验身份证号    
在Excel中检验身份证号    
在Excel中检验身份证号
Next
在Excel中检验身份证号    
MsgBox "全部正确", , "提示"
在Excel中检验身份证号
End Sub
在Excel中检验身份证号
Function CurrentIdCheck() As Integer
在Excel中检验身份证号
Dim ret As Integer
在Excel中检验身份证号
'MsgBox ActiveCell.Text
在Excel中检验身份证号'
ret = IDCheck(ActiveCell.Text)
在Excel中检验身份证号'
MsgBox ret
在Excel中检验身份证号'
CurrentIdCheck = ret
在Excel中检验身份证号
CurrentIdCheck = 0
在Excel中检验身份证号
End Function
在Excel中检验身份证号
Function IDCheck(ByVal e As StringAs Integer
在Excel中检验身份证号 
Dim arrVerifyCode
在Excel中检验身份证号 
Dim Wi
在Excel中检验身份证号 
Dim Checker
在Excel中检验身份证号 
Dim BirthDay
在Excel中检验身份证号 IDCheck 
= 0 '验证通过时返回
在Excel中检验身份证号
 arrVerifyCode = Split("1,0,X,9,8,7,6,5,4,3,2"",")
在Excel中检验身份证号 Wi 
= Split("7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2"",")
在Excel中检验身份证号 Checker 
= Split("1,9,8,7,6,5,4,3,2,1,1"",")
在Excel中检验身份证号 
If Len(e) < 15 Or Len(e) = 16 Or Len(e) = 17 Or Len(e) > 18 Then
在Excel中检验身份证号 
'IDCheck= "身份证号必须是15位数或18位数!"
在Excel中检验身份证号
 IDCheck = 1
在Excel中检验身份证号 
Exit Function
在Excel中检验身份证号 
End If
在Excel中检验身份证号 
Dim Ai As String
在Excel中检验身份证号 
If Len(e) = 18 Then
在Excel中检验身份证号 Ai 
= Mid(e, 117)
在Excel中检验身份证号 
ElseIf Len(e) = 15 Then
在Excel中检验身份证号 Ai 
= CStr(e)
在Excel中检验身份证号 Ai 
= Left(Ai, 6& "19" & Mid(Ai, 79)
在Excel中检验身份证号 
End If
在Excel中检验身份证号 
If Not IsNumeric(Ai) Then
在Excel中检验身份证号 
'IDCheck= "身份证除最后一位外,必须为数字!"
在Excel中检验身份证号
 IDCheck = 2
在Excel中检验身份证号 
Exit Function
在Excel中检验身份证号 
End If
在Excel中检验身份证号 
Dim strYear As Integer
在Excel中检验身份证号 
Dim strMonth As Integer
在Excel中检验身份证号 
Dim strDay As Integer
在Excel中检验身份证号 strYear 
= CInt(Mid(Ai, 74))
在Excel中检验身份证号 strMonth 
= CInt(Mid(Ai, 112))
在Excel中检验身份证号 strDay 
= CInt(Mid(Ai, 132))
在Excel中检验身份证号 BirthDay 
= Trim(strYear) + "-" + Trim(strMonth) + "-" + Trim(strDay)
在Excel中检验身份证号 
If IsDate(BirthDay) Then
在Excel中检验身份证号 
If DateDiff("yyyy"Now(), CDate(BirthDay)) < -140 Or CDate(BirthDay) > Now() Then
在Excel中检验身份证号 
'IDCheck= "身份证输入错误(日期输入错误)!"
在Excel中检验身份证号
 IDCheck = 3
在Excel中检验身份证号 
Exit Function
在Excel中检验身份证号 
End If
在Excel中检验身份证号 
If strMonth > 12 Or strDay > 31 Then
在Excel中检验身份证号 
'IDCheck= "身份证输入错误(日期输入错误)!"
在Excel中检验身份证号
 IDCheck = 3
在Excel中检验身份证号 
Exit Function
在Excel中检验身份证号 
End If
在Excel中检验身份证号 
Else
在Excel中检验身份证号 
'IDCheck= "身份证输入错误(日期输入错误)!"
在Excel中检验身份证号
 IDCheck = 3
在Excel中检验身份证号 
Exit Function
在Excel中检验身份证号 
End If
在Excel中检验身份证号 
Dim i As Integer
在Excel中检验身份证号 
Dim TotalmulAiWi As Integer
在Excel中检验身份证号 
For i = 0 To 16
在Excel中检验身份证号 TotalmulAiWi 
= TotalmulAiWi + CInt(Mid(Ai, i + 11)) * CInt(Wi(i))
在Excel中检验身份证号 
Next
在Excel中检验身份证号 
Dim modValue As Integer
在Excel中检验身份证号 modValue 
= TotalmulAiWi Mod 11
在Excel中检验身份证号 
Dim strVerifyCode ' As Object
在Excel中检验身份证号
 strVerifyCode = arrVerifyCode(modValue)
在Excel中检验身份证号 Ai 
= Ai & strVerifyCode
在Excel中检验身份证号 
If Len(e) = 18 And CStr(e) <> Ai Then
在Excel中检验身份证号 
'IDCheck= "身份证号码输入错误(身份证包含有非法字符)!"
在Excel中检验身份证号
 IDCheck = 4
在Excel中检验身份证号 
Exit Function
在Excel中检验身份证号 
End If
在Excel中检验身份证号 
End Function

相关文章:

  • 2022-02-15
  • 2021-09-27
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
猜你喜欢
  • 2021-12-18
  • 2021-10-13
相关资源
相似解决方案