用VB实现18位身份证输入错误的批量验证

合集下载

利用ExcelVBA插件实现证件信息批量校验

利用ExcelVBA插件实现证件信息批量校验

利用ExcelVBA插件实现证件信息批量校验作者:宋义河来源:《计算机光盘软件与应用》2012年第24期摘要:使用Excel表格实现证件申请信息批量填报,并按要求对有关内容进行有效性校验。

通过分析JPG格式图片文件的结构,自行编写代码获取图片尺寸等信息。

利用ExcelVBA 插件,实现了证件提报信息批量校验。

关键词:ExcelVBA插件;JPG图片文件;有效性校验中图分类号:TP311 文献标识码:A 文章编号:1007-9599 (2012) 24-0004-031 引言举办重要会议、活动时,通常需要为与会人员制作发放专用证件。

因为与会人员数量较多,逐一录入效率很低,一般情况下采用批量提报的方式采集数据。

目前,我单位使用公安部第一研究所开发的证件管理软件制作证件,该软件使用Excel表格批量导入制证信息。

申请单位按要求将申请人姓名、身份证号码、单位等信息填入既定格式的Excel表格,与申请人照片保存在同一文件夹内打包提报。

照片文件为JPG格式,以申请人姓名加“-”再加出生日期命名,如“张三-19810213.JPG”。

为了保证照片质量,通常需要对照片尺寸和文件大小提出要求,如照片尺寸指定为413×579像素,文件大小不超过300K。

这种数据采集方式大大减轻了制证人员的工作量,提高了工作效率。

在实际应用中我们也遇到了一些问题:一是导入信息时缺少照片。

有些是因为确实漏报了照片,有些是因为照片不是JPG格式,更多的是因为照片文件命名错误,比如姓名、出生日期与表格内容不一致,文件名中有多余空格,以及因为扩展名被隐藏而在文件名中多输入了“.JPG”,把照片文件命名成类似“张三-19810213.JPG.JPG”的情况。

二是提交的照片不符合要求。

普遍存在尺寸不符的情况,并且很多照片的宽高比例不合适,制作证件时因为拉伸而严重变形。

三是普遍反映填报信息时效率不高。

特别是命名照片文件时,一一核对出生日期比较麻烦,很容易出现错误。

使用VBA进行数据验证

使用VBA进行数据验证

使用VBA进行数据验证在Excel中,VBA(Visual Basic for Applications)是一种强大的编程语言,能够帮助用户自定义功能和自动化任务。

其中一个常见的应用就是数据验证。

通过使用VBA进行数据验证,用户可以确保数据的准确性和完整性,避免输入错误和不一致的数据。

在这篇文章中,我们将介绍如何利用VBA来进行数据验证,并展示具体的代码示例。

数据验证是一种重要的技术,可以有效避免用户在输入数据时出现错误。

通过设定规则和条件,可以限制用户输入的范围,确保数据的有效性。

在Excel中,我们可以通过数据验证功能实现这一目的,而借助VBA,用户可以更灵活地定制验证规则,实现更复杂的验证逻辑。

首先,我们需要打开Excel,并按下Alt + F11键打开VBA编辑器。

在VBA编辑器中,我们可以开始编写代码。

假设我们有一个需要进行数据验证的单元格范围,比如A1:A10。

我们可以编写以下代码来限制该单元格范围只能输入数字:```vbaPrivate Sub Worksheet_Change(ByVal Target As Range)Dim cell As RangeFor Each cell In TargetIf Not Intersect(cell, Me.Range("A1:A10")) Is Nothing ThenIf Not IsNumeric(cell.Value) ThenMsgBox "只能输入数字!", vbExclamationApplication.EnableEvents = Falsecell.Value = ""Application.EnableEvents = TrueEnd IfEnd IfNext cellEnd Sub```在上面的代码中,我们通过Worksheet_Change事件来触发数据验证。

在Excel中使用VBA实现数据校验

在Excel中使用VBA实现数据校验

在Excel中使用VBA实现数据校验Excel是一款功能强大的电子表格软件,可以帮助我们管理和分析大量的数据。

然而,当我们需要对输入的数据进行校验时,手动逐个检查数据是一项耗时且容易出错的任务。

幸运的是,Excel提供了VBA(Visual Basic for Applications)编程语言,可以帮助我们自动实现数据校验,提高工作效率。

数据校验是确保数据的准确性和完整性的关键步骤。

通过在Excel中使用VBA,我们可以创建自定义的数据校验规则,确保输入的数据满足特定条件。

首先,我们需要打开Excel,并启用VBA编辑器。

按下ALT+F11键,即可进入VBA编辑器界面。

在VBA编辑器界面中,我们可以根据需求创建新的模块。

在模块中编写VBA代码来实现数据校验。

下面是一个简单的例子,说明如何在Excel中使用VBA实现数据校验的过程。

例子:假设我们要校验一个名为"成绩表"的Excel表格中的成绩数据。

我们需要确保所有的分数都在0到100之间。

首先,在VBA编辑器中创建一个新的模块。

在模块中编写以下VBA代码:```Sub CheckData()Dim rng As RangeDim cell As Range'设置要校验的数据范围,即成绩表的数据区域Set rng = Range("成绩表!A2:A10")'遍历数据范围中的每一个单元格For Each cell In rng'判断单元格中的数值是否在0到100之间If cell.Value < 0 Or cell.Value > 100 Then'如果不在范围内,则将单元格的背景色设置为红色cell.Interior.Color = RGB(255, 0, 0)End IfNext cellEnd Sub```在上述代码中,我们通过定义一个Range对象(rng)来设置要校验的数据范围。

18位身份证号码输入的几种解决方法

18位身份证号码输入的几种解决方法

18位身份证号码输入的几种解决方法:1、在A1单元输入号码时,在前面先输入‟号,就是:‟123456789012345,这样单元格会默认为该单元为文本方式,会完整显示出15个号码来,而不会显示那令人讨厌的科学计数方式来了。

2、如果已经输入了大量的号码,全部以科学计数显示的话,而又懒的按照上面的方法一个一个的重新输入的话,也有这个好方法哦,比如已在单元A1:A100输入了号码,按以下步骤做:》选择单元A1:A100》单击鼠标右键,设置单元格式》选择自定义,在…类型‟中输入…0‟即可,轻松搞定,呵呵!!3、还有一种用函数来解决的方法:在A1:A100已经输入大量的号码时,在B1单元中输入:=trim(' 'a1),注意两个‟之间是空格,这个公式的意思:先在A1单元15位号码前加个空格符号,然后用trim这个函数把空格符号去掉。

输完后,B1单元也是显示出完整的15位数字了。

最佳答案使WORD里面的文章自动生成目录:假如文章中标题格式为第一节……大标题(一级)1.1……小标题(二级)1.1.1—……小标题下的小标题(三级)……第N节……大标题(一级)n.1……小标题(二级)n.1.1—……小标题下的小标题(三级)自动生成文章目录的操作:一、设置标题格式1.选中文章中的所有一级标题;2.在“格式”工具栏的左端,“样式”列表中单击“标题1”。

仿照步骤1、2设置二、三级标题格式为标题2、标题3。

二、自动生成目录1.把光标定位到文章第1页的首行第1个字符左侧(目录应在文章的前面);2.执行菜单命令“插入/引用/索引和目录”打开“索引的目录”对话框;3.在对话框中单击“目录”选项卡,进行相关设置后,单击“确定”按钮,文章的目录自动生成完成。

友情提示:目录页码应该与正文页码编码不同。

把光标定位在目录页末,执行“插入/分隔符/下一页/确定”操作,在目录与正文之间插入分页符;执行“视图/页眉和页脚”命令,把光标定位到正文首页的页脚处,单击“页眉和页脚”工具栏上的“链接到前一个”按钮正文页脚与目录页脚的链接;执行“插入/页码”命令,在“格式”中选择页码格式、选中“起始页码”为“1”,单击“确定。

用VBA构建身份证验证函数

用VBA构建身份证验证函数

用VBA构建身份证验证函数同学们在用VBA构建用户管理系统时,需要收集用户信息,在采集用户信息时,经常会遇到身份证信息输入混乱的情况,有的用户胡乱输入、有的输入明显错误,如何对身份证信息进行校验,规范输入信息呢?本节深入探讨用VBA代码进行身份证校验。

身份证号码的编码规则身份证号码共18位,由17位本体码和1位校验码组成。

1.前6位是地址码,表示登记户口时所在地的行政区划代码,依照《中华人民共和国行政区划代码》国家标准(GB/T2260)的规定执行;2.7到14位是出生年月日,采用YYYYMMDD格式;3.15到17位是顺序码,表示在同一地址码所标识的区域范围内,对同年、同月、同日出生的人编订的顺序号,顺序码的奇数分配给男性,偶数分配给女性,即第17位奇数表示男性,偶数表示女性;4.第18位是校验码,采用ISO 7064:1983, MOD 11-2校验字符系统。

一代身份证与二代身份证的区别在于:1.一代身份证是15位,二代身份证是18位;2.一代身份证出生年月日采用YYMMDD格式,二代身份证出生年月日采用YYYYMMDD格式;3.一代身份证无校验码,二代身份证有校验码。

1.区划代码校验首先,把从网上下载的行政区划代码放入名为“区划代码”的工作表中,此步骤主要是校验用户输入的前6位是否在区划代码中找到。

代码如下:arr = Worksheets("区划代码").Range("a1", Worksheets("区划代码").Range("a" & Rows.Count).End(xlUp))AreaCode = Mid(MyId, 1, 6) '提取身份证前6位IsCorrect = FalseFor i = 1 To UBound(arr)If CStr(arr(i, 1)) = AreaCode ThenIsCorrect = TrueExit ForEnd IfNextIf IsCorrect = False ThenIdCardCheck = "区划代码错误"Exit FunctionEnd If2.身份证的长度验证身份证字符长度应为18位或15位,其他长度的不符合要求If Not (Len(MyId) = 18 Or Len(MyId) = 15) ThenIdCardCheck = "身份信息位数不符合要求"Exit FunctionEnd If3.验证日期字符串是否合法(1)验证身份证信息中除最后一位是否含有字符,如果含有字符,说明不合法;(2)验证日期格式是否合法。

VB编程份证校验尾号方法

VB编程份证校验尾号方法
VersionCompanyName="美好的家"
CompilationType=0
OptimizationType=0
FavorPentiumPro(tm)=0
CodeViewDebugInfo=0
NoAliasing=0
BoundsCheck=0
OverflowCheck=0
FlPointCheck=0
Caption = " 生成新的证号"
Height = 255
Left = 360
TabIndex = 2
Top = 480
Width = 1815
End
Begin VB.OptionButton Option1
Caption = " 校验是否正确"
Height = 255
End
Begin boBox Combo6
Height = 300
Left = 3480
TabIndex ቤተ መጻሕፍቲ ባይዱ = 9
Text = "Combo6"
Height = 495
Left = 240
MaxLength = 18
TabIndex = 3
Text = "添入17位验证码或完整号码"
Top = 360
Visible = 0 'False
Width = 2415
End
Begin mandButton Command1
Caption = "Command1"
Left = 360
TabIndex = 1

vba 判断excel本列身份证号是否正确

vba 判断excel本列身份证号是否正确

Function getYjm(num)'dd = "新身份证:" & Left(xian, 6) & "19" & Right(xian, 9) & CStr(getYjm(xian)) Dim ciDIf Len(num) = 15 ThenciD = Left(num, 6) & "19" & Right(num, 9)ElseIf Len(num) = 17 Or Len(num) = 18 ThenciD = Left(num, 17)ElsegetYjm = "f"Exit FunctionEnd IfEnd IfFor i = 1 To Len(ciD)If Not IsNumeric(Mid(ciD, i, 1)) ThengetYjm = "f"Exit FunctionEnd IfNext insum = Mid(ciD, 1, 1) * 7nsum = nsum + Mid(ciD, 2, 1) * 9nsum = nsum + Mid(ciD, 3, 1) * 10nsum = nsum + Mid(ciD, 4, 1) * 5nsum = nsum + Mid(ciD, 5, 1) * 8nsum = nsum + Mid(ciD, 6, 1) * 4nsum = nsum + Mid(ciD, 7, 1) * 2nsum = nsum + Mid(ciD, 8, 1) * 1nsum = nsum + Mid(ciD, 9, 1) * 6nsum = nsum + Mid(ciD, 10, 1) * 3nsum = nsum + Mid(ciD, 11, 1) * 7nsum = nsum + Mid(ciD, 12, 1) * 9nsum = nsum + Mid(ciD, 13, 1) * 10nsum = nsum + Mid(ciD, 14, 1) * 5nsum = nsum + Mid(ciD, 15, 1) * 8nsum = nsum + Mid(ciD, 16, 1) * 4nsum = nsum + Mid(ciD, 17, 1) * 2'*计算校验位check_number = 12 - nsum Mod 11If check_number = 10 Thencheck_number = "X"End IfIf check_number = 12 Thencheck_number = "1"End IfIf check_number = 11 Thencheck_number = "0"End IfgetYjm = check_numberEnd FunctionFunction getCsrc(num, flaG)lenx = Len(num)If lenx = 15 Thenyy = "19" & Mid(xian, 7, 2)mm = Mid(num, 9, 2)dd = Mid(num, 11, 2)End IfIf lenx = 18 Thenyy = Mid(num, 7, 4)mm = Mid(num, 11, 2)dd = Mid(num, 13, 2)End Ifss = yy & "/" & mm & "/" & ddIf flaG = 0 ThenIf IsDate(ss) ThengetCsrc = ssElsegetCsrc = "1900/02/02"End IfElseIf IsDate(ss) ThengetCsrc = ssElsegetCsrc = "f"End IfEnd IfEnd FunctionFunction getSbie(num, flaG)Dim yy, mm, dd As Stringlenx = Len(num)If lenx = 15 Thenaa = Mid(num, 15, 1) '15位身分证取第十五位,能被2整除为女性End IfIf lenx = 18 Thenaa = Mid(num, 17, 1) '18位身分证取第十七位,能被2整除为女性End IfIf flaG = 0 ThenIf (Not IsNumeric(aa)) Or aa = "" Thenaa = 1End IfIf aa Mod 2 = 0 Thenxb = "女"Elsexb = "男"End IfgetSbie = xbElseIf (Not IsNumeric(aa)) Or aa = "" ThengetSbie = "f"Exit FunctionEnd IfIf aa Mod 2 = 0 Thenxb = "女"Elsexb = "男"End IfgetSbie = xbEnd IfEnd FunctionFunction banduanShengfen(num) As Boolean Dim a, b, c, da = getYjm(num)b = getCsrc(num, 1)c = getSbie(num, 1)num = Replace(num, "x", "X")d = Right(num, 1)If Len(num) = 18 ThenIf StrComp(d, a) = 0 ThenElsea = "f"End IfEnd IfIf (Len(num) < 15) Or (Len(num) > 18) Thena = "f"End IfIf 15 < Len(num) And Len(num) < 18 Thena = "f"End IfIf a = "f" Or b = "f" Or c = "f" Then banduanShengfen = FalseElsebanduanShengfen = TrueEnd IfEnd FunctionSub yianzhengShengfen()Dim rng As RangeDim selCount, i, j, k, concelCount, conrowCount As IntegerDim selStr(100) As StringDim selTemp() As StringDim Tempstr As StringconcelCount = edRange.Columns.CountconrowCount = edRange.Rows.CountFor Each rng In SelectionDoEventsselTemp = Split(rng.Address, "$")Tempstr = selTemp(1)j = 0For i = 0 To selCountIf selTemp(1) = selStr(i) Thenj = 1End IfNext iIf j = 0 ThenselStr(selCount) = selTemp(1)selCount = selCount + 1End IfNextk = 0Tempstr = ""For j = 1 To conrowCountDoEventsIf Not banduanShengfen(Replace(Range(selStr(0) & j).V alue, " ", "")) ThenRange(selStr(0) & j).Interior.Color = RGB(255, 98, 98)Tempstr = Tempstr & j & ","k = k + 1End IfNext jIf Not Range(selStr(0) & "1").Comment Is Nothing ThenRange(selStr(0) & "1").ClearCommentsIf k > 0 ThenRange(selStr(0) & "1").AddComment "本列中共" & k & "个身份号不对,其中:" & Left(Tempstr, Len(Tempstr) - 1) & "行身份证号不对"ElseRange(selStr(0) & "1").AddComment "本列身份证号全对"End IfElseIf k > 0 ThenRange(selStr(0) & "1").AddComment "本列中共" & k & "个身份号不对,其中:" & Left(Tempstr, Len(Tempstr) - 1) & "行身份证号不对"ElseRange(selStr(0) & "1").AddComment "本列身份证号全对"End IfEnd IfEnd Sub。

用excel做VBA身份证号码校队

用excel做VBA身份证号码校队
5.2 各模块中的代码
(1) 模块 1—启动验证程序 (插入模块编写): Sub auto_open()
Application.ScreenUpdating = False ' 关闭屏显 On Error Resume Next Dim i As Integer Dim HelpMenu As CommandBarControl Dim NewMenu As CommandBarPopup Dim MenuItem As CommandBarControl Dim SubMenuItem As CommandBarButton ' 隐藏常规菜单项 For i = 1 To mandBars(1).Controls.Count
DOI:10.16184/prg.2012.23.007
PROGRAM LANGUAGE
编程语言
用 VBA 验证身份证号码的正确性
洪成波 张贻忠
摘 要: 用 Excel VBA 编写一段程序, 来验证身份证号码位数是否为 18 位 (二代要求)、 字符是 否合法、 号码是否正确, 从而达到身份证号码自动验证, 去掉打印核对环节, 提高工作效率。 关键词: 身份证号码; Excel VBA; 正确性。
With MenuItem .Caption = "验证号码的正确性" .ShortcutText = "Ctrl+Shift+L" ' 添加快捷键 .FaceId = 25 .OnAction = "验号码正确性"
End With ' 利用 ID 属性查找帮助菜单
26 2012. 23
Байду номын сангаас
PROGRAM LANGUAGE

excel的身份证效验程序

excel的身份证效验程序

打开EXCEL,把宏的安全级别设置为“低”,以后再改回来。

然后打开VB编辑器,新建一模块,加入以下代码Function 身份证(n As Object)wi = Array("7", "9", "10", "5", "8", "4", "2", "1", "6", "3", "7", "9", "10", "5", "8", "4", "2") y = Array("1", "0", "X", "9", "8", "7", "6", "5", "4", "3", "2")d = Array("29", "31", "28", "31", "30", "31", "30", "31", "31", "30", "31", "30", "31", "30") s = EmptyIf Len(n) = 15 Then身份证 = "请填18位身份证号"Exit FunctionElseIf Len(n) = Empty Then身份证 = EemptyExit FunctionEnd If年份 = Val(Mid(n, 7, 4))月份 = Val(Mid(n, 11, 2))月份2 = 月份If 月份2 = 2 Thentt = Val(Mid(年份, 3, 2))If tt <> 0 Thentt = 年份 Mod 4If tt = 0 Then 月份2 = 0Elsett = 年份 Mod 400If tt = 0 Then 月份2 = 0End IfEnd If日期 = Val(Mid(n, 13, 2))If 日期 > Val(d(月份2)) Or 日期 = 0 Then身份证 = "日历无此日"Exit FunctionEnd IfIf 月份 > 12 Or 月份 = 0 Then身份证 = "日历无此月份"Exit FunctionEnd IfIf 年份 > Year(Date) Then身份证 = "还没生出来"Exit FunctionElseIf 年份 < Year(Date) - 100 Then身份证 = "百岁老人"Exit FunctionEnd IfIf Len(n) = 17 ThenFor h = 0 To 16r = Mid(n, h + 1, 1)s = s + r * wi(h)Next ht = s Mod 11身份证 = "校验码未填 " & y(t)ElseIf Len(n) = 18 ThenFor h = 0 To 16r = Mid(n, h + 1, 1)s = s + r * wi(h)Next ht = s Mod 11t = y(t)r = Mid(n, 18, 1)If t <> r Then身份证 = "False"Elsett = Val(Mid(n, 15, 3)) Mod 2If tt = 0 Then身份证 = "女"Else身份证 = "男"End IfEnd IfElseMsgBox "身份证位数不正确"End IfEnd Function然后返回EXCLE,把身份证号填入单格,再填入公式如:=身份证(A3。

使用VBA进行数据校验

使用VBA进行数据校验

使用VBA进行数据校验随着信息技术的不断发展,VBA(Visual Basic for Applications)已经成为数据处理和管理中一种常用的工具。

利用VBA进行数据校验,可以帮助用户快速有效地检验数据的准确性和完整性,提高工作效率。

以下将介绍如何在Excel中使用VBA进行数据校验。

首先,打开Excel表格,并按Alt + F11组合键进入VBA编辑器界面。

接着,在“插入”菜单中选择“模块”,在新建的模块中输入下列代码:```VBAFunction CheckData()Dim rng As RangeDim cell As RangeSet rng = Range("A1:A100") '假设要校验的数据范围是A1:A100For Each cell In rngIf cell.Value = "" Thencell.Interior.Color = RGB(255, 0, 0) '如果数据为空,将单元格标记为红色End IfNext cellEnd Function```上述代码中,定义了一个名为CheckData的函数,用于检验A1到A100单元格范围内的数据。

如果某个单元格为空,就会将其标记为红色。

用户可以根据实际需要修改数据范围和颜色设置。

接着,在Excel表格中选择需要校验的数据范围,例如A1到A100单元格。

然后按Alt + F8组合键调出宏对话框,选择CheckData函数并运行。

此时,符合条件的单元格将会被标记为红色,从而便于用户快速识别并进行修正。

除了上述简单的数据校验功能,VBA还支持更加复杂的数据校验规则。

用户可以编写自定义的VBA代码,实现例如范围判断、数据格式校验、重复数值检查等功能。

通过灵活运用VBA,用户可以根据实际需求定制各类数据校验规则,提高数据处理的准确性和效率。

总之,使用VBA进行数据校验是一种强大而高效的方法,可以帮助用户快速有效地检验数据的准确性和完整性。

15位和18位身份证JS校验的简单实例

15位和18位身份证JS校验的简单实例
下面小编就为大家带来一篇15位和18位身份证JS校验的简单实例。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。
一、身份证号码的结构和表示形式
1、号码的结构
根据〖中华人民共和国国家标准GB11643-1999〗中有关公民身份号码的规定,公民身份号码是特征组合码,由十七位数字本体码和一位校验码组成。排列顺序从左至右依次为:六位数字地址码,八位数字出生日期码,三位数字顺序码和一位数字校验码。
——81~99表示省(自治区)辖县级市。
三、其它
15位身份证号码:
第7、8位为出生年份(两位数,用年份的后两位表示),&nbsp;
第9、10位为出生月份,&nbsp;
第11、12位代表出生日期,&nbsp;
第13、14位为顺序码,这个是随机数,&nbsp;
第15位代表性别,奇数为男,偶数为女。
18位身份证号码:
(3)第5、6位数字:所在地级县(市)编码,表示县、自治县、县级市、旗、自治旗、市辖区、林区、特区。&nbsp;
——01~20表示市辖区、地区(自治州、盟)辖县级市、市辖特区以及省(自治区)直辖县级行政区划中的县级市,01通常表示辖区汇总码;
——21~80表示县、自治县、旗、自治旗、林区、地区辖特区;
&nbsp; &nbsp; &nbsp;return true;
&nbsp; &nbsp;}else{
&nbscheck) return false;
&nbsp; //判断长度为15位或18位&nbsp;
&nbsp; if(idCardNo.length==15){
&nbsp; &nbsp; return idCardNoUtil.check15IdCardNo(idCardNo);

VBA中的用户输入验证和错误提示

VBA中的用户输入验证和错误提示

VBA中的用户输入验证和错误提示在VBA(Visual Basic for Applications)中,用户输入验证和错误提示是非常重要的功能。

通过验证用户输入并提示错误,我们可以保证程序的稳定性和可靠性。

本文将介绍如何在VBA中实现用户输入验证和错误提示的方法。

首先,我们需要了解用户输入验证的基本概念。

用户输入验证是指对用户输入的合法性进行检查,确保输入的数据符合预期的要求。

例如,如果我们要求用户输入一个数字,并且只接受大于0的整数,那么我们需要验证用户输入的是否为数字以及是否大于0。

如果用户输入的数据不符合要求,我们需要向用户提供相应的错误提示,以便用户重新输入。

在VBA中,可以通过多种方式实现用户输入验证和错误提示。

下面介绍几种常用方法。

一、使用InputBox函数获取用户输入InputBox函数是VBA中用于获取用户输入的函数。

它可以显示一个对话框,提示用户输入数据。

我们可以通过判断用户输入的数据是否符合要求来实现验证和错误提示。

以下是一个示例代码:```Sub UserInputValidation()Dim userInput As StringDim validInput As BooleanvalidInput = FalseDo Until validInputuserInput = InputBox("请输入一个大于0的整数:")If IsNumeric(userInput) ThenIf userInput > 0 And Round(userInput) = userInput Then validInput = TrueElseMsgBox "输入的不是大于0的整数,请重新输入!" End IfElseMsgBox "输入的不是数字,请重新输入!"End IfLoopMsgBox "你输入的数字是:" & userInputEnd Sub```在上述代码中,通过使用InputBox函数获取用户输入的数据,并使用IsNumeric函数判断用户输入的数据是否为数字。

用VB实现18位身份证输入错误的批量验证

用VB实现18位身份证输入错误的批量验证

用VB实现18位身份证输入错误的批量验证在学校里,建学生档案、中考、高考报名时通常都要班主任收集和输入学生的身份证号码,因为身份证数字位数多,既容易输错,逐一验证更是费工夫,如果能够用程序进行批量验证,把输错的号码找出来,只针对错误的号码进行验证就轻松得多了。

本算法只能发现输入错误的18位身份证号码,不涉及身份证信息的解读和真伪验证。

VB程序的界面很简单,最少只要一个TEXTBOX和一个命令按钮(下图)。

TEXTBOX只要把MultiLine(多行)属性设为True和ScrollBar(滚动条)属性设为2-Vertical(垂直)即可。

这样TEXTBOX就可以容纳多个身份证号码,每个一行。

在EXCEL 表格里输好然后统一复制过来即可。

18位身份证的验证算法是这样的:①.将前面的身份证号码17位数分别乘以不同的系数。

从第一位到第十七位的系数分别为:7 9 10 5 8 4 2 1 6 3 7 9 10 5 8 4 2②.将这17位数字和系数相乘的结果相加。

③.用加出来和除以11,看余数是多少?④.余数只可能有0 1 2 3 4 5 6 7 8 9 10这11个数字。

其分别对应的最后一位身份证的号码为1 0 X 9 8 7 6 5 4 3 2。

而程序的实现过程就是先把TEXTBOX内的身份证号码按行拆成字符数组,然后逐个对每个身份证号码的前17位进行计算,得出其校验码再与第18位号码进行对照,如果相同就是对的,如果不同则说明有输入错误。

然后在每个错误的身份证号码后加上相关信息,使用者可以根据错误信息,只针对有错误的身份证号码来核对证件上的身份证号码。

按钮的代码如下:Private Sub Command1_Click()REM 准备工作,前17位系数和对应检验码放入数组wi$ = "7 9 10 5 8 4 2 1 6 3 7 9 10 5 8 4 2"yzm$ = "1 0 X 9 8 7 6 5 4 3 2"Dim s1() As StringDim s2() As Strings1 = Split(wi$, " ")s2 = Split(yzm$, " ")REM 获取身份证号并验证Dim s() As Stringtemp$ = Text1.Texts = Split(temp$, vbNewLine)x = UBound(s) '检测数组的上标For i = 0 To xIf Len(s(i)) = 18 Thensu = 0For j = 1 To 17c$ = Mid$(s(i), j, 1)a = Val(c$)su = su + a * Val(s1(j - 1))Next jy = su Mod 11c$ = Mid(s(i), 18, 1)If UCase(c$) <> s2(y) Thens(i) = s(i) & " ←校验错误"End IfElses(i) = s(i) & " ←不是18位"End IfNextREM 清除TEXTBOX并把字符数组信息写入TEXTBOX Text1.Text = ""For i = 0 To xText1.Text = Text1.Text & s(i) & vbNewLineNextEnd Sub验证结果如下图:。

vb居民身份证 校验函数

vb居民身份证 校验函数
CheckCIDC15 = "号码输入有误!月份和日期不匹配"
Exit Function
ElseIf Val(Mid(StrID15, 9, 2)) = 2 And (Val(Mid(StrID15, 11, 2)) = 30 Or Val(Mid(StrID15, 11, 2)) = 31) Then
Exit Function
Else
If (Val(Mid(StrID15, 9, 2)) = 4 Or Val(Mid(StrID15, 9, 2)) = 6 Or Val(Mid(StrID15, 9, 2)) = 9 Or Val(Mid(StrID15, 9, 2)) = 11) And Val(Mid(StrID15, 11, 2)) = 31 Then
Dim StrID17 As String, AiWi As Integer, Num As Integer, A18 As String
Dim sA, sDate
Dim iA
sA = Mid(StrID18, 7, 4)
sDate = sA & "-" & Mid(StrID18, 11, 2) & "-" & Mid(StrID18, 13, 2)
Case 1
StrID18 = StrID17 & "0"
Case 2
ቤተ መጻሕፍቲ ባይዱ StrID18 = StrID17 & "X"
Case 3
StrID18 = StrID17 & "9"
Case 4
Case 8

VB制作系统登录界面,包括用户名,密码和错误校验及效果全代码

VB制作系统登录界面,包括用户名,密码和错误校验及效果全代码

VB制作系统登录界面,包括用户名,密码和错误校验及效果全代码第十讲:教你用VB制作系统登录界面,包括用户名,密码和错误校验及效果全代码以下代码均为个人学习心得,经过测试并且无误,可以嵌入大型程序中作为身份认证的功能作用。

其中有一些窗体名和效果代码,不必复制,否则会出现错误,请仔细阅读核心代码理解即可。

红色代码部份为实现用户检测的关键代码,必需要有后台数据库用来存放用户信息,通过 conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\HISDB.mdb"来连接,然后用If rs.EOF = True Then进行判断表中是否存在用户信息即可。

Option ExplicitDim Cnum As IntegerPrivate Sub CmdCancel_Click()'//结束EndEnd SubPrivate Sub CmdLogin_Click()Dim UserName As StringDim PassWord As StringDim conn As New ADODB.ConnectionDim rs As New ADODB.RecordsetDim StrSQL As Stringconn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" &App.Path & "\HISDB.mdb"UserName = Trim(TxtUserName.Text) '//将文本框内的值赋给定义好的全局变量PassWord = Trim(TxtPassword.Text) If UserName = "" Or PassWord = "" ThenMsgBox "对不起,用户或密码不能为空~请重新输入~~", vbCritical, "错误"ElseIf UserName <> Empty And PassWord <> Empty Then '//用户名与密码是否为空Cnum = Cnum + 1StrSQL = "select * from 用户信息表 where 用户名称= '" & UserName & "'and 用户口令 ='" & PassWord & "'"rs.Open StrSQL, conn, adOpenKeyset, adLockPessimistic '//打开记录集If rs.EOF = True ThenMsgBox "对不起,无此用户或者密码不正确~请重新输入~~", vbCritical, "错误"TxtUserName.Text = ""TxtPassword.Text = ""TxtUserName.SetFocusrs.CloseIf Cnum >= 3 ThenMsgBox "对不起,您已经多次失败,无权操作本系统~", vbCritical, "无权限"Unload MeExit SubEnd IfElse '登陆成功,以下为权限验证If rs.Fields("用户权限").Value = "系统管理" Then Frmmdimain.Show Unload MeElseIf rs.Fields("用户权限").Value = "挂号" ThenFrmregistration2.ShowUnload MeElseIf rs.Fields("用户权限").Value = "诊断" Then Frmdiagnose2.Show Unload MeElseIf rs.Fields("用户权限").Value = "收费" Then Frmcharges2.Show Unload MeElseIf rs.Fields("用户权限").Value = "发药" Then Frmmedicine2.Show Unload MeEnd Ifrs.CloseEnd IfEnd IfEnd SubPrivate Sub Form_Load()'//加载主窗时给文本框赋值TxtUserName.Text = "Admin"TxtPassword.Text = "123"Cnum = 0End SubPrivate Sub TmrChangeColor_Timer() '//调用定义好的改变颜色过程, Call changecolor(LblWelcome(0), 0, 1, 2, 3, 4, 5, 6, 7)End SubPrivate Sub TmrMoveText1_Timer() '//移动LblShaSiLblShaSi(0).Move LblShaSi(0).Left + 20 LblShaSi(1).Move LblShaSi(1).Left + 20 End SubPrivate Sub TmrMoveText2_Timer() '//移动LblShaSiIf LblShaSi(0).Left + LblShaSi(0).Width >= Me.Width +LblShaSi(0).WidthThenLblShaSi(0).Move -1500End IfIf LblShaSi(1).Left + LblShaSi(1).Width >= Me.Width +LblShaSi(1).WidthThenLblShaSi(1).Move -1500End IfEnd Sub'//定义一个改变颜色的过程,下面的control就是我们所说的控件 Sub changecolor(LCnt As Control, color1 As Integer, _color2 As Integer, color3 As Integer, _color4 As Integer, color5 As Integer, _color6 As Integer, color7 As Integer, _color8 As Integer)Dim tmep As Integertmep = Val(LCnt.Tag) '//将返回包含于字符串内的数字赋给TEMP Select Case tmepCase color1LCnt.Tag = color2Case color2LCnt.Tag = color3Case color3LCnt.Tag = color4Case color4LCnt.Tag = color5Case color5LCnt.Tag = color6Case color6LCnt.Tag = color7Case color7LCnt.Tag = color8Case color8LCnt.Tag = color1End SelectLCnt.ForeColor = QBColor(LCnt.Tag) '//给控件LCnt中的字体赋予颜色,注意QBColor是将一值'//转换为三色,MSDN详解,我也是在那查的````哈End Sub。

如何利用Visual Basic开发身份证号码批量验证工具软件

如何利用Visual Basic开发身份证号码批量验证工具软件

s f z j y m= " X ”
Ca s e 3


f z j y m= … 9 ’
份证号码编码规则编写 了《 身份证号码批量验证工具》 软件 , 使身
份证号码核对工作变得简单 轻松 。

Ca s e4
s f z j y m = … 8 ’
Ca s e 5
( 3 ) 验证代码。
Pr iv a t e Su b y zC l i c k 0
_
n I = V a l ( M i d ¥ ( n u m, 1 , l 7 n 2 = V a l ( M i d ¥ ( n u m, 2 , l 9 n 3 = V a l ( M i d ¥ ( n u m, 3 , 1 ) 1 0
a d r ¥ = Mi d ¥ ( d k d h k . I n i t D i r &“ 、 ” &d k d h k . F i l e N a me 。 2 ,L e n ( d k d h k . I n i t Di r &“ \ ' ’ &d k d h k . F i l e N a me ) 一l 1
S e t a p p=Ne w Ex c e 1 . Ap p l i c a t i o n
n l 1 = V a l ( Mi d ¥ ( h u m, 1 1 , 1 ” 7
n l 2 = V a l ( Mi d ¥ ( n u m, 1 2 , l 9 n 1 3 = V a l ( Mi d ¥ ( n u m, 1 3 , 1 ) 1 0 n l 4 = Va l ( Mi d ¥ ( n u m, 1 4 , 1 ) ) 5 n l 5 = V a l ( Mi d ¥ ( n u m, 1 5 , l 8

身份证号码校验也可以利用excel函数公式完成

身份证号码校验也可以利用excel函数公式完成

身份证号码校验也可以利用excel函数公式完成身份证号码校验也可以利用excel函数公式完成,无需vba编程。

一、18位身份证号码校验函数公式:=IF(LEN(B2)=18,IF(MID("10X98765432",MOD(SUM(MID(LEF T(B2,17),ROW(INDIRECT("1:17")),1)*2^(18-ROW(INDIRECT("1:17")))),11)+1,1)=RIGHT(B2,1),"通过","校验未通过"),"")二、15位身份证号码升18位函数公式:=IF(LEN(B2)=15,REPLACE(B2,7,,19)&MID("10X98765432",M OD(SUM(MID(REPLACE(B2,7,,19),ROW(INDIRECT("1:17")),1)*2^( 18-ROW(INDIRECT("1:17")))),11)+1,1),"")三、同时完成15位升位或18位校验的函数公式:=IF(LEN(B2)=18,IF(MID("10X98765432",MOD(SUM(MID(LEF T(B2,17),ROW(INDIRECT("1:17")),1)*2^(18-ROW(INDIRECT("1:17")))),11)+1,1)=RIGHT(B2,1),"通过","校验未通过"),IF(LEN(B2)=15,REPLACE(B2,7,,19)&MID("10X98765432",MOD( SUM(MID(REPLACE(B2,7,,19),ROW(INDIRECT("1:17")),1)*2^(18-ROW(INDIRECT("1:17")))),11)+1,1),""))以上公式中B2为身份证号码所在单元格。

VBA 中的数据校验与错误提示设置方法

VBA 中的数据校验与错误提示设置方法

VBA 中的数据校验与错误提示设置方法VBA(Visual Basic for Applications)是一种基于微软的 Visual Basic 编程语言的宏语言。

它被广泛应用于 Microsoft Office 软件中,包括Excel、Word 和 PowerPoint 等。

在 VBA 中,我们可以使用数据校验和错误提示来确保用户输入的数据符合预定的规则或标准,以提高数据的准确性和可靠性。

本文将介绍如何在 VBA 中进行数据校验以及设置错误提示的方法。

数据校验是一种有效的方式,用于防止用户输入无效或错误的数据。

在 VBA 中,我们可以使用 `Validation` 对象记录数据校验的规则,并将其应用到特定的单元格范围。

在下面的示例中,我们将展示如何使用VBA 进行简单的数据校验。

假设我们要确保用户在单元格 A1 中只能输入数字。

我们可以使用`Validation` 对象的 `Add` 方法来添加数据校验规则,并将其应用到 A1 单元格上。

```Sub DataValidationExample()With Worksheets("Sheet1").Range("A1").Validation.Delete ' 删除已有的数据校验规则.Add Type:=xlValidateWholeNumber,AlertStyle:=xlValidAlertStop, _Operator:=xlBetween, Formula1:="0", Formula2:="100".ErrorMessage = "请输入 0 到 100 之间的整数!".ShowError = TrueEnd WithEnd Sub```上述代码中,我们首先使用了 `Validation` 对象的 `Delete` 方法来删除已有的数据校验规则,以确保单元格 A1 中没有其他数据校验规则。

用于验证身份证号码的有效性,包括长度检查、字符检查和校验位检查的Excel函数公式

用于验证身份证号码的有效性,包括长度检查、字符检查和校验位检查的Excel函数公式

该函数用于验证身份证号码的有效性,包括长度检查、字符检查和校验位检查。

Function Peng(IDCard As String) As String' 定义变量Dim Weights As VariantDim CheckDigits As StringDim Sum As IntegerDim Remainder As IntegerDim CalculatedCheckDigit As StringDim i As Integer' 校验身份证号码的长度是否为18位If Len(IDCard) <> 18 ThenPeng = "错误:长度不正确" ' 返回错误信息Exit FunctionEnd If' 校验前17位是否全为数字For i = 1 To 17If Not IsNumeric(Mid(IDCard, i, 1)) ThenPeng = "错误:包含非数字字符" ' 如果有非数字字符,返回错误信息Exit FunctionEnd IfNext i' 校验最后一位字符是否为数字或字母XIf Not (Mid(IDCard, 18, 1) Like "[0-9X]") ThenPeng = "错误:最后一位字符无效" ' 返回错误信息Exit FunctionEnd If' 定义权重系数数组Weights = Array(7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2, 1)' 计算前17位数字的加权和Sum = 0For i = 1 To 17Sum = Sum + CInt(Mid(IDCard, i, 1)) * Weights(i - 1) ' 将每位数字乘以对应的权重Next i' 计算校验码Remainder = Sum Mod 11 ' 计算加权和的模11CheckDigits = "10X98765432" ' 定义校验码对应的字符串CalculatedCheckDigit = Mid(CheckDigits, Remainder + 1, 1) ' 获取计算出的校验位' 校验最后一位字符If UCase(Mid(IDCard, 18, 1)) = CalculatedCheckDigit ThenPeng = "正确" ' 如果校验位正确,返回“正确”ElsePeng = "错误" ' 如果校验位不正确,返回“错误”End IfEnd Function使用方法1.打开Excel:启动Microsoft Excel并打开你要使用的工作簿。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

用VB实现18位身份证输入错误的批量验证
在学校里,建学生档案、中考、高考报名时通常都要班主任收集和输入学生的身份证号码,因为身份证数字位数多,既容易输错,逐一验证更是费工夫,如果能够用程序进行批量验证,把输错的号码找出来,只针对错误的号码进行验证就轻松得多了。

本算法只能发现输入错误的18位身份证号码,不涉及身份证信息的解读和真伪验证。

VB程序的界面很简单,最少只要一个TEXTBOX和一个命令按钮(下图)。

TEXTBOX只要把MultiLine(多行)属性设为True和ScrollBar(滚动条)属性设为2-Vertical(垂直)即可。

这样TEXTBOX就可以容纳多个身份证号码,每个一行。

在EXCEL 表格里输好然后统一复制过来即可。

18位身份证的验证算法是这样的:
①.将前面的身份证号码17位数分别乘以不同的系数。

从第一位到第十七位的系数分别为:7 9 10 5 8 4 2 1 6 3 7 9 10 5 8 4 2
②.将这17位数字和系数相乘的结果相加。

③.用加出来和除以11,看余数是多少?
④.余数只可能有0 1 2 3 4 5 6 7 8 9 10这11个数字。

其分别对应的最后一位身份证的号码为1 0 X 9 8 7 6 5 4 3 2。

而程序的实现过程就是先把TEXTBOX内的身份证号码按行拆成字符数组,然后逐个对每个身份证号码的前17位进行计算,得出其校验码再与第18位号码进行对照,如果相同就是对的,如果不同则说明有输入错误。

然后在每个错误的身份证号码后加上相关信息,使用者可以根据错误信息,只针对有错误的身份证号码来核对证件上的身份证号码。

按钮的代码如下:
Private Sub Command1_Click()
REM 准备工作,前17位系数和对应检验码放入数组
wi$ = "7 9 10 5 8 4 2 1 6 3 7 9 10 5 8 4 2"
yzm$ = "1 0 X 9 8 7 6 5 4 3 2"
Dim s1() As String
Dim s2() As String
s1 = Split(wi$, " ")
s2 = Split(yzm$, " ")
REM 获取身份证号并验证
Dim s() As String
temp$ = Text1.Text
s = Split(temp$, vbNewLine)
x = UBound(s) '检测数组的上标
For i = 0 To x
If Len(s(i)) = 18 Then
su = 0
For j = 1 To 17
c$ = Mid$(s(i), j, 1)
a = Val(c$)
su = su + a * Val(s1(j - 1))
Next j
y = su Mod 11
c$ = Mid(s(i), 18, 1)
If UCase(c$) <> s2(y) Then
s(i) = s(i) & " ←校验错误"
End If
Else
s(i) = s(i) & " ←不是18位"
End If
Next
REM 清除TEXTBOX并把字符数组信息写入TEXTBOX Text1.Text = ""
For i = 0 To x
Text1.Text = Text1.Text & s(i) & vbNewLine
Next
End Sub
验证结果如下图:。

相关文档
最新文档