ERLANDSEN DATA CONSULTING Excel & VBA Tips   Information in English / Informasjon på engelsk

Disse websidene oppdateres ikke lengre og er kun tilgjengelig for historikken sin skyld.

Klikk her for å gå til den oppdaterte informasjonen.

Kontroller personnummer

Ved hjelp av den egendefinerte funksjonen nedenfor kan man kontrollere om et personnummer er riktig eller ikke.

Function ValiderPersonNr(ByVal strPersonNr As String) As Boolean
Dim s(1 To 11) As Integer, i As Integer
Dim y As Integer, m As Integer, d As Integer
Dim lngDate As Long, K1 As Integer, K2 As Integer
    ValiderPersonNr = False
    Do While Len(strPersonNr) < 11
        strPersonNr = "0" & strPersonNr
    Loop
    If Len(strPersonNr) <> 11 Then Exit Function
    d = CInt(Mid$(strPersonNr, 1, 2))
    m = CInt(Mid$(strPersonNr, 3, 2))
    y = CInt(Mid$(strPersonNr, 5, 2))
    If d < 1 Or d > 31 Then Exit Function
    If m < 1 Or m > 12 Then Exit Function
    If y < 0 Or y > 99 Then Exit Function
    If y <= 30 Then
        y = 2000 + y
    Else
        y = 1900 + y
    End If
    lngDate = DateSerial(y, m, d)
    For i = 1 To 11
        s(i) = CInt(Mid(strPersonNr, i, 1))
    Next i
    K1 = s(1) * 3 + s(2) * 7 + s(3) * 6 + _
        s(4) * 1 + s(5) * 8 + s(6) * 9 + _
        s(7) * 4 + s(8) * 5 + s(9) * 2
    K1 = K1 Mod 11
    If K1 = 1 Then Exit Function
    If K1 <> 0 Then K1 = 11 - K1
    K2 = s(1) * 5 + s(2) * 4 + s(3) * 3 + _
        s(4) * 2 + s(5) * 7 + s(6) * 6 + _
        s(7) * 5 + s(8) * 4 + s(9) * 3 + K1 * 2
    K2 = K2 Mod 11
    If K2 = 1 Then Exit Function
    If K2 <> 0 Then K2 = 11 - K2
    If s(10) <> K1 Then Exit Function
    If s(11) <> K2 Then Exit Function
    ValiderPersonNr = True
End Function

 

Dokumentet er sist oppdatert 2002-05-14 12:42:50      Utskriftsvennlig versjon

 

Erlandsen Data Consulting     http://www.erlandsendata.no/   
Excel & VBA Tips   Copyright ©1999-2024    Ole P. Erlandsen   All rights reserved
E-post kontaktadresse