Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 2543|回复: 9

[已解决]自己改编的身份证验证代码,老是提示“下标越界”

[复制链接]
发表于 2014-10-22 16:56 | 显示全部楼层 |阅读模式
Sub IDcollect()
Dim Myrow As Integer
'定义所在行
Dim XB As Integer
'定义性别
Dim M As Date
'定义出生年龄
Dim K As Date
'定义时间


For Myrow = 6 To Sheets("两有人员台账").Range("D1048567").End(xlUp).Row《==这一句(用的是excle2013


'计算性别15位和8位
    If Len(Sheets("两有人员台账").Range("D" & Myrow)) = 15 Then
        XB = Right(Sheets("两有人员台账").Range("D" & Myrow), 1) Mod 2
            Sheets("两有人员台账").Range("E" & Myrow) = IIf(XB = 1, "男", "女")
    Else
        If Len(Sheets("两有人员台账").Range("D" & Myrow)) = 18 Then
           XB = Mid(Sheets("两有人员台账").Range("D" & Myrow), 17, 1) Mod 2
               Sheets("两有人员台账").Range("E" & Myrow) = IIf(XB = 1, "男", "女")
        Else
        Sheets("两有人员台账").Range("E" & Myrow) = "身份证错误"
        End If
    End If


'计算出生年月
    If Len(Sheets("两有人员台账").Range("D" & Myrow)) = 15 Then
           Sheets("两有人员台账").Range("F" & Myrow) = "19" + Mid(Sheets("两有人员台账").Range("D" & Myrow), 7, 2) + "-" + Mid(Sheets("两有人员台账").Range("D" & Myrow), 9, 2) + "-" + Mid(Sheets("两有人员台账").Range("D" & Myrow), 11, 2)
    Else
         If Len(Sheets("两有人员台账").Range("D" & Myrow)) = 18 Then
           Sheets("两有人员台账").Range("F" & Myrow) = Mid(Sheets("两有人员台账").Range("D" & Myrow), 7, 4) + "-" + Mid(Sheets("两有人员台账").Range("D" & Myrow), 11, 2) + "-" + Mid(Sheets("两有人员台账").Range("D" & Myrow), 13, 2)
       Else
        Sheets("两有人员台账").Range("F" & Myrow) = "身份证错误"
        End If
    End If

'计算年龄
    If Len(Sheets("两有人员台账").Range("D" & Myrow)) = 15 Then
     If CInt(Mid(Sheets("两有人员台账").Range("D" & Myrow), 9, 2)) > 12 Or CInt(Mid(Sheets("两有人员台账").Range("D" & Myrow), 11, 2)) > 31 Then
        Sheets("两有人员台账").Range("G" & Myrow) = "身份证错误"
     Else
         M = "19" + Mid(Sheets("两有人员台账").Range("D" & Myrow), 7, 2) + "-" + Mid(Sheets("两有人员台账").Range("D" & Myrow), 9, 2) + "-" + Mid(Sheets("两有人员台账").Range("D" & Myrow), 11, 2)
         K = Mid(Sheets("两有人员台账").Range("D" & Myrow), 9, 2) + "-" + Mid(Sheets("两有人员台账").Range("D" & Myrow), 11, 2)
       If Date >= K Then
         Sheets("两有人员台账").Range("G" & Myrow) = Year(Date) - Year(M)
       Else
         Sheets("两有人员台账").Range("G" & Myrow) = Year(Date) - Year(M) - 1
       End If
     End If
    Else
       If Len(Sheets("两有人员台账").Range("D" & Myrow)) = 18 Then
        If CInt(Mid(Sheets("两有人员台账").Range("D" & Myrow), 11, 2)) > 12 Or CInt(Mid(Sheets("两有人员台账").Range("D" & Myrow), 13, 2)) > 31 Then
           Sheets("两有人员台账").Range("G" & Myrow) = "身份证错误"
        Else
         M = Mid(Sheets("两有人员台账").Range("D" & Myrow), 7, 4) + "-" + Mid(Sheets("两有人员台账").Range("D" & Myrow), 11, 2) + "-" + Mid(Sheets("两有人员台账").Range("D" & Myrow), 13, 2)
         K = Mid(Sheets("两有人员台账").Range("D" & Myrow), 11, 2) + "-" + Mid(Sheets("两有人员台账").Range("D" & Myrow), 13, 2)
           If Date >= K Then
                 Sheets("两有人员台账").Range("G" & Myrow) = Year(Date) - Year(M)
           Else
                 Sheets("两有人员台账").Range("G" & Myrow) = Year(Date) - Year(M) - 1
           End If
        End If
       Else
         Sheets("两有人员台账").Range("G" & Myrow) = "身份证错误"
       End If
    End If

'判断是否4050人员
    If Sheets("两有人员台账").Range("E" & Myrow) = "男" Then
       If Sheets("两有人员台账").Range("G" & Myrow) >= 50 Then
         Sheets("两有人员台账").Range("H" & Myrow) = "是"
       Else
         Sheets("两有人员台账").Range("H" & Myrow) = "否"
       End If
    Else
       If Sheets("两有人员台账").Range("E" & Myrow) = "女" Then
          If Sheets("两有人员台账").Range("G" & Myrow) >= 40 Then
            Sheets("两有人员台账").Range("H" & Myrow) = "是"
          Else
            Sheets("两有人员台账").Range("H" & Myrow) = "否"
          End If
       Else
          Sheets("两有人员台账").Range("H" & Myrow) = "无法识别"
       End If
    End If

Next

End Sub


最佳答案
2014-10-22 17:34
还是你的工作表名称有问题 但是又看不出来 我把工作表的名称复制了过去 运行就OK了
发表于 2014-10-22 17:02 | 显示全部楼层
回复

使用道具 举报

发表于 2014-10-22 17:09 | 显示全部楼层
本帖最后由 我心飞翔410 于 2014-10-22 17:12 编辑

For Myrow = 6 To Sheets("两有人员台账").Range("D1048567").End(xlUp).Row 试试
For Myrow = 6 To Sheets("两有人员台账").Cells(Rows.Count, 4).End(xlUp).Row
还有就是 工作表名称正确不

回复

使用道具 举报

 楼主| 发表于 2014-10-22 17:13 | 显示全部楼层
怎么找都不是好清楚啊
回复

使用道具 举报

 楼主| 发表于 2014-10-22 17:16 | 显示全部楼层
改了一样的 工作薄名字正确
回复

使用道具 举报

发表于 2014-10-22 17:22 | 显示全部楼层
237174864 发表于 2014-10-22 17:16
改了一样的 工作薄名字正确

附件弄上来看看  难不成你的后缀名是xlx
回复

使用道具 举报

 楼主| 发表于 2014-10-22 17:23 | 显示全部楼层
后缀名是xlsm
回复

使用道具 举报

 楼主| 发表于 2014-10-22 17:25 | 显示全部楼层
麻烦大神帮忙看看

台账.rar

67.6 KB, 下载次数: 2

回复

使用道具 举报

发表于 2014-10-22 17:34 | 显示全部楼层    本楼为最佳答案   
还是你的工作表名称有问题 但是又看不出来 我把工作表的名称复制了过去 运行就OK了

台账.zip

50.85 KB, 下载次数: 7

回复

使用道具 举报

 楼主| 发表于 2014-10-22 17:54 | 显示全部楼层
这都可以 谢谢 大神
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-5-2 18:10 , Processed in 0.479393 second(s), 13 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表