close

Private Function CheckID(ByVal UserID As String) As Boolean
        Dim AreaNo As Long
        Dim I As Integer
        Dim CheckSum As Long
        Dim AreaCode As String

        UserID = UCase(UserID)
        AreaCode = Microsoft.VisualBasic.Left(UserID, 1)
        CheckID = False
        If Len(UserID) <> 10 Then
            Return False '確定身證有10碼
        End If

        'If (AreaCode < "A" Or AreaCode > "Z") Then
        '    Return False '確定首碼在A-Z之間
        'End If

        'If Not IsNumeric(Mid(UserID, 2)) Then
        '    Exit Function '確定2-10碼是數字
        'End If

        '取得首碼對應的區域碼,A ->10, B->11, ..H->17,I->34, J->18...
        AreaNo = InStr("ABCDEFGHJKLMNPQRSTUVXYWZIO", AreaCode) + 9

        UserID = CStr(AreaNo) + Mid(UserID, 2)
        '取得CheckSum的值
        CheckSum = CLng(Mid(UserID, 1, 1)) + CLng(Mid(UserID, 11, 1))
        For I = 2 To 10
            CheckSum = CheckSum + CLng(Mid(UserID, I, 1)) * (11 - I)
        Next
        CheckID = IIf(CheckSum Mod 10 = 0, True, False)

        Return CheckID
    End Function

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 alen1985 的頭像
    alen1985

    1與0的世界

    alen1985 發表在 痞客邦 留言(0) 人氣()