VBA Luhn checkciffer (Modulus 10)
Jeg har fundet en kode, hvor jeg kan lave forskellige formler på checkciffer efter modulus 10. Jeg får dog ved formlen luhnCheck et forkert svar, hvis jeg bruger 14 cifre. Er der en der kan hjælpe?Ean kode som jeg vil have testet er 10813427001072
Vba koden er sådan her:
' probably only needed internally
Function luhnSum(InVal As String) As Integer
Dim evenSum As Integer
Dim oddSum As Integer
evenSum = 0
oddSum = 0
Dim strLen As Integer
strLen = Len(InVal)
Dim i As Integer
For i = strLen To 1 Step -1
Dim digit As Integer
digit = CInt(Mid(InVal, i, 1))
If ((i Mod 2) = 0) Then
oddSum = oddSum + digit
Else
digit = digit * 2
If (digit > 9) Then
digit = digit - 9
End If
evenSum = evenSum + digit
End If
Next i
luhnSum = (oddSum + evenSum)
End Function
' for the curious
Function luhnCheckSum(InVal As String)
luhnCheckSum = luhnSum(InVal) Mod 10
End Function
' true/false check
Function luhnCheck(InVal As String)
luhnCheck = (luhnSum(InVal) Mod 10) = 0
End Function
' returns a number which, appended to the InVal, turns the composed number into a valid luhn number
Function luhnNext(InVal As String)
Dim luhnCheckSumRes
luhnCheckSumRes = luhnCheckSum(InVal)
If (luhnCheckSumRes = 0) Then
luhnNext = 0
Else
luhnNext = ((10 - luhnCheckSumRes))
End If
End Function