Potřebujete zjistit, jestli EAN je validní 13místný kód – tedy že má daný řetězec 13 číslic, z toho ta poslední je správný kontrolní checksum? Tahle funkce vám to vyřeší (vrací TRUE/FALSE).
Function checkEAN(ean) Dim s As String Dim cs As Integer Dim i As Integer Dim digit As Integer If (TypeName(ean) = "Range") Then s = ean.Value ElseIf (TypeName(ean) = "String" Or TypeName(ean) = "Integer") Then s = ean End If If (Len(s) <> 13) Then checkEAN = False Return End If cs = 0 'checksum For i = 1 To 12 digit = Mid(s, i, 1) - "0" 'get the next digit from bar code text If i Mod 2 = 0 Then cs = cs + digit * 3 'multiply each bar code digit by it's weight, 1 or 3 Else cs = cs + digit * 1 End If Next i cs = (10 - (cs Mod 10)) Mod 10 'which digit must be added to cs to make it divisible by 10 checkEAN = False checkEAN = (Mid(s, 13, 1) = cs) End Function