anne_n_d Novice
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
Daffodil Professor
20. maj 2020 - 06:07 #1
Jan K Ekspert
20. maj 2020 - 10:35 #2
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.
anne_n_d Novice
23. maj 2020 - 20:21 #3
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
Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links

Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester





Premium
Coloplasts it-direktør: GDPR har givet de it-kriminelle et nyt værktøj til at angribe os
Interview: Det er ikke kun på plads og kapacitet, at sundhedssektoren lige nu er udfordret. De sikkerhedsansvarlige har også fået en del mere at se til gennem et kaotisk 2020. "Cyberkriminelle har opdaget, at der er en hel masse værdi i denne her datatype. Enten som afpresningsmulighed eller som viden, de kan udnytte til noget," siger CIO i Coloplast, René Rasmussen.


Læs første artikel i serien om perspektiver fra sektoren, der er de it-kriminelles nye guldkalv
Computerworld
Intel taber retssag og skal betale to milliarder dollar: "Det er skandaløst"
Chipgiganten Intel har tabt en retsag i USA, og er blevet idømt en bøde på hele 2,1 milliarder dollar. Det er en af de største bøder for en patentsag i USA's historie.
CIO
Har du rost din mellemleder i dag? Snart er de uddøde - og det er et tab
Computerworld mener: Mellemledere lever livet farligt: Topledelsen får konstant ideer med skiftende hold i virkeligheden, og moden går mod flade agile organisationer. Men mellemlederen er en overset hverdagens helt med et kæmpe ansvar. Her er min hyldest til den ofte latterliggjorte mellemleder.
Job & Karriere
IBM Danmark trækker tilbud om frivillige fratrædelser tilbage for stort antal ansatte: "IBM har taget røven på sine ansatte"
Som led i IBM Danmarks store fyringsrunde fik 130 ansatte grønt lys til at forlade selskabet på en frivillig fratrædelsesordning. Men nu har IBM Danmark trukket det oprindelige tilbud tilbage for størstedelen af de ansatte.
White paper
Ryk SAP-workloads i skyen – og tag alle de kendte fordele med
SAP-kunder verden over har gennem de seneste 15 år draget fordel af løsninger baseret på NetApps ONTAP-data management-platform. Herunder en mere sikker og stabil drift samt forenklet administration, hvilket er afgørende for at gennemføre projekter effektivt og for at reducere deres risikoprofil. Gennem de seneste år er det i høj grad også blevet muligt at rykke SAP-workloads i skyen, og det ønsker mange virksomheder rimeligvis at drage fordel af – men uden at sige farvel til mulighederne med NetApp ONTAP. I dette whitepaper stiller vi skarpt på mulighederne for at indarbejde NetApp Cloud Volumes ONTAP and Azure NetApp Files som del af en SAP-strategi baseret på Microsoft Azure.