Kontrollerar om ett personsignum är korrekt angivet genom att validera signumets kontrolltecken.
Användning:
SignumCheck("101010-101B") ger TRUE
SignumCheck("101010-101A") ger FALSE
' Fungerar i Access om vbString byts till 8
' Är väl inte så stolt över GoTo satserna men det bara blev så...
Function SignumCheck(sSigIN)
Dim sSignum As String
Dim iRetVal As Integer
Dim sMellan As String
Dim lSiffran As Long
Dim sTecken As String
Dim iIndexet As Integer
sTecken = "0123456789ABCDEFHJKLMNPRSTUVWXY" 'OBS! G, I, O, Q fattas
sSignum = sSigIN & "" ' för att se till att Signum alltid är ngt
If sSigIN & "" = "" Then
GoTo FEEL ' Godkänn inte tomt
'GoTo BRA om du accepterar tomt signum
ElseIf VarType(sSigIN) <> vbString Then ' vbString är definierat till 8
GoTo FEEL
End If
sMellan = Mid(sSignum, 7, 1) ' bindetecken?
If sMellan = "-" Or sMellan = "+" Or sMellan = " " Then
sSignum = Left(sSignum, 6) & Mid(sSignum, 8, 4)
End If
If Len(sSignum) <> 10 Then
GoTo FEEL
End If
If Not IsNumeric(Left(sSignum, 9)) Then
GoTo FEEL
End If
lSiffran = Val(Left(sSignum, 9))
iIndexet = (lSiffran Mod 31) + 1
If Right(sSignum, 1) <> UCase(Mid(sTecken, iIndexet, 1)) Then
GoTo FEEL
End If
GoTo BRA
FEEL:
SignumCheck = False
Exit Function
BRA:
SignumCheck = True
End Function