View Single Post
  #1   Report Post  
Union70
 
Posts: n/a
Default Mod-10 Check Digit


Thanks for everyone's input. I was able to create this spreadsheets.

Thanks,
John




Harlan Grove Wrote:
"Myrna Larson" wrote...-
In case anyone is interested in a VBA solution, here's a routine. The
input
can include digits plus dashes and spaces (which are ignored). If it-
includes-
any other characters, it returns -1 to indicate an error.-
....

Me, I prefer a more pointer-like approach, and I prefer to keep error
checking outside loops.


Function LUHN(ByVal ds As String, Optional dw As Boolean = False) As
Long
Const EVENDIGITS As String = "0516273849"
Const ODDDIGITS As String = "0123456789"

Dim k As Long, n As Long
Dim ed As String, od As String

ds = Application.WorksheetFunction.Substitute(ds, " ", "")
ds = Application.WorksheetFunction.Substitute(ds, "-", "")

If ds Like "*[!0-9]*" Then
LUHN = -1
Exit Function
End If

n = Len(ds)
LUHN = -n

If dw Then
ed = EVENDIGITS
od = ODDDIGITS
Else
ed = ODDDIGITS
od = EVENDIGITS
End If

For k = n To 2 Step -2
LUHN = LUHN + InStr(od, Mid(ds, k, 1)) + InStr(ed, Mid(ds, k - 1,
1))
Next k

If k = 1 Then LUHN = LUHN + InStr(od, Mid(ds, k, 1))

LUHN = (10 - LUHN Mod 10) Mod 10
End Function[/QUOTE



--
Union70