让错误的身份证号码自动变红色(VBA支持)
来源:原创 更新时间:2018-04-10 23:45:48 编辑:Legend 浏览:3057
日常生活中,常常将身份证号码输入错误,本例通过vba监控,及时校验身份证号码的正确性(若输入成别人的身份证号码无法识别),将错误号码显示为红色并发音提示。
最终效果
打开Excel或WPS表格,切换到VBA编辑器:
双击左侧的sheet1(如是其它表名请自行选择),把以下代码复制到右侧弹出的窗口:
'代码开始
Private Sub Worksheet_Change(ByVal Target As Range)
On Error Resume Next
If Target.Column = 4 Then '要输入身份证号码的列,根据你要输入的列修改
St = Target.Value
Su = 0
For i = 17 To 1 Step -1
Su = Su + Mid(St, i, 1) * ((2 ^ (18 - i)) Mod 11)
Next
If UCase(Right(St, 1)) <> Mid("10X98765432", (Su Mod 11) + 1, 1) Then
Target.Font.Color = vbRed
Else
Target.Font.Color = vbBlack
End If
End If
End Sub
'代码结束
调整好以后,回到表格,在D列输入身份证号码,如果正确就会显示黑色,错误显示红色。
除红色提醒以外,还可语音提醒。在VBA编辑器界面,单击工具菜单-引用,找到Microsoft Speech Object Library,并在前面的框中打上勾,然后点确定。
代码做如下修改:
'代码开始
调整好以后,回到表格,在D列输入身份证号码,如果正确就会显示黑色,错误显示红色。
除红色提醒以外,还可语音提醒。在VBA编辑器界面,单击工具菜单-引用,找到Microsoft Speech Object Library,并在前面的框中打上勾,然后点确定。
代码做如下修改:
'代码开始
Public LD As SpVoice
Private Sub Worksheet_Change(ByVal Target As Range)
On Error Resume Next
If Target.Column = 4 Then '要输入身份证号码的列
St = Target.Value
Su = 0
For i = 17 To 1 Step -1
Su = Su + Mid(St, i, 1) * ((2 ^ (18 - i)) Mod 11)
Next
If UCase(Right(St, 1)) <> Mid("10X98765432", (Su Mod 11) + 1, 1) Then
Target.Font.Color = vbRed
If LD Is Nothing Then
Set LD = New SpVoice
End If
LD.Volume = 100
LD.Speak "错误", SVSFlagsAsync
Else
Target.Font.Color = vbBlack
End If
End If
End Sub
‘代码结束
切换回表格界面,输入错误的身份证号码,便可语音提示错误。当然,你可以改成其它的提示语音。
‘代码结束
切换回表格界面,输入错误的身份证号码,便可语音提示错误。当然,你可以改成其它的提示语音。