Dim testVal : testVal = "123456789012"
Dim arrMultipliers : arrMultipliers = Array(1,0,80,7,32,4,12,0,10,18,3)
Function Method1()
Dim m1Array(11)
Dim m1i, m1Temp
For m1i = 0 To 11
m1Array(m1i) = Mid(testVal,m1i+1,1)
Next
For m1i = 0 To 10
m1Temp = m1Temp + m1Array(m1i) * arrMultipliers(m1i)
Next
Method1 = (CInt(m1Array(11)) = 11 - (m1Temp Mod 11))
End Function
Function Method2()
Dim m2i, m2Temp, m2Target
m2Target = CInt(Right(testVal,1))
For m2i = 0 To 10
m2Temp = m2Temp + CInt(Mid(testVal,m2i+1,1)) * arrMultipliers(m2i)
Next
Method2 = (m2Target = 11 - (m2Temp Mod 11))
End Function
Function Method3()
Dim m3Regex, m3Results, m3Result
Dim m3i, m3Temp
m3i = 0
Set m3Regex = New RegExp
m3Regex.Global = True
m3Regex.Pattern = "\d"
Set m3Results = m3Regex.Execute(testVal)
For Each m3Result In m3Results
If m3i = 11 Then
Method3 = (CInt(m3Result) = 11 - (m3Temp Mod 11))
Exit For
End If
m3Temp = m3Temp + CInt(m3Result) * arrMultipliers(m3i)
m3i = m3i + 1
Next
End Function
Function Method4()
Dim m4Temp, m4i, m4Rem
m4Rem = "." & testVal & "1"
For m4i = 0 To 11
m4Rem = m4Rem * 10
m4Rem = m4Rem - ((m4Rem\10) * 10)
If m4i = 11 Then
Method4 = (Fix(m4Rem) = 11 - (m4Temp Mod 11))
Exit Function
End If
m4Temp = m4Temp + Fix(m4Rem) * arrMultipliers(m4i)
Next
End Function