Luhnアルゴリズム(ISO/IEC 7812-1)
うちのサイトで結構検索されるキーワードに「EXCEL LUHN」という言葉があります。
クレジットカードや口座番号のチェックに使われるチェックデジットですね。
実装内容はこちらです。なおバグがあっても当方の関知することではありませんが
バグってたら教えてね。
引数のクレジットカード番号を渡して、正しい番号であれば True 誤りであれば False を返します。
途中に、rlxIsNumber という関数がありますが数値チェックをしています。
'-------------------------------------------------------------- ' Luhnアルゴリズム(ISO/IEC 7812-1) ' クレジットカード番号のチェック '-------------------------------------------------------------- Function rlxIsLuhn(ByVal strNo As String) As Boolean Dim lngLen As Long Dim lngOdd As Long Dim lngEvn As Long Dim i As Long Dim lngAns As Long Dim strCheckDigit As String lngLen = Len(strNo) lngOdd = 0 lngEvn = 0 If lngLen < 2 Then rlxIsLuhn = False Exit Function End If If rlxIsNumber(strNo) Then Else rlxIsLuhn = False Exit Function End If For i = 1 To lngLen If (i Mod 2) = 1 Then '奇数桁のみを加算(チェックディジットを除く) lngOdd = lngOdd + Val(Mid$(strNo, lngLen - i + 1, 1)) Else '偶数桁のみを加算 Dim lngWork As Long lngWork = Val(Mid$(strNo, lngLen - i + 1, 1)) * 2 lngEvn = lngEvn + Fix(lngWork / 10) + lngWork Mod 10 End If Next lngAns = (lngOdd + lngEvn) Mod 10 If lngAns = 0 Then rlxIsLuhn = True Else rlxIsLuhn = False End If End Function
最近のコメント