Avatar billede dennisgs Praktikant
26. juli 2016 - 16:09 Der er 2 kommentarer

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
Avatar billede dennisgs Praktikant
26. juli 2016 - 16:12 #1
Linjen If ((i Mod 2) = 0) Then skulle have været If ((i Mod 2) <> 0) Then
Avatar billede ebea Ekspert
26. juli 2016 - 17:06 #2
Hvis du kan bruge det som en lille excel fil, er her et eks. på en 14 modulus!
https://www.dropbox.com/s/arwb77t2ofqjel8/modulus.xls?dl=0
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester