20. maj 2020 - 02:53
Der er
3 kommentarer
VBA code til 11 modulus
Hvordan skal man validere et CPR-nummer med en Modulus 11-kontrol? Jeg ved godt, at man skal gange CPR nummer med 432765432.
dvs.
Første tal gange med 4
Anden tal gange med 3 osv.
Men hvordan så man ganger hver eneste tal i VBA? Har ingen ide!
På forhånd tak
Du kan faktisk gøre det uden VBA
Formlen forudsætter at cpr-nummeret indtastes celle A1 i formatet xxxxxx-xxxx, altså med bindestreg. Hele formlen skal indtastes ud i et:
=HVIS(VÆRDI(HØJRE(A1;1))=11-REST(VENSTRE(A1)*4+MIDT(A1;2;1)*3+MIDT(A1;3;1)*2+MIDT(A1;4;1)*7+MIDT(A1;5;1)*6+MIDT(A1;6;1)*5+(MIDT(A1;8;1)*4+MIDT(A1;9;1)*3)+MIDT(A1;10;1)*2;11);"Cpr-nummer OK";"Cpr-nummer ikke gyldigt")
Og vær opmærksom på, at Modulus 11 kontrollen ikke virker på alle cpr-numre udstedt efter 2007, hvor den blev afskaffet.
daffodil : har prøvet det, men det lykkes ikke.
Værdien/resultatet af beregningen/valideringen skal indsættes fra J1 til J68
Kan du se, hvad jeg mangler ?
Har skrevet følgende:
Sub cprtest()
Dim Xvar As Long
Dim Resultat As Long
Dim txtRegistrantCPR
Dim antalPatienter
Dim CPR
Dim SlutCiffer
CPR = Worksheets("Vurdering").Range("A2").End(xlDown).Row
If (Worksheets("Vurdering").Range("A2").Value <> "") Then
antalPatienter = Worksheets("Vurdering").Range("A1").End(xlDown).Row
Else
If CPR = antalPatienter Then
Xvar = Val(Mid(txtRegistrantCPR, 1, 1)) * 4
Xvar = Xvar + Val(Mid(txtRegistrantCPR, 2, 1)) * 3
Xvar = Xvar + Val(Mid(txtRegistrantCPR, 3, 1)) * 2
Xvar = Xvar + Val(Mid(txtRegistrantCPR, 4, 1)) * 7
Xvar = Xvar + Val(Mid(txtRegistrantCPR, 5, 1)) * 6
Xvar = Xvar + Val(Mid(txtRegistrantCPR, 6, 1)) * 5
Xvar = Xvar + Val(Mid(txtRegistrantCPR, 7, 1)) * 4
Xvar = Xvar + Val(Mid(txtRegistrantCPR, 8, 1)) * 3
Xvar = Xvar + Val(Mid(txtRegistrantCPR, 9, 1)) * 2
SlutCiffer = Val(Mid(txtRegistrantCPR, 10, 1))
Resultat = 11 - (Xvar Mod 11)
End If
If Resultat = 11 Then
Resultat = 0
End If
If Resultat <> SlutCiffer Then
MsgBox "Forkert CPR-nummer"
End If
End If
End Sub