Avatar billede anne_n_d Novice
23. maj 2020 - 23:00 Der er 10 kommentarer

VBA - hjælp AKUT

Hej, er igang med at teste modulus 11.
Har set andre kommentar og har prøvet at lave same same, men det lykkes ikke ved mig.

Jeg skal teste CPR nr fra celle "A6" og svaret skal indsættes i celle F5.(Forkert eller gyldig CPR nr) 

Når jeg trykker på RUN, så kommer ikke noget frem, hvad har jeg lavet forkert?

Sub ny()


    Dim CPRtest
    Dim Resultat
    Dim SlutCiffer
    Dim Xvar
   
   
    Testtest = Worksheets("Hjem").Range("F5").Value
   
    If (Worksheets("Hjem").Range("A6").Value <> "") Then
   
        Xvar = Val(Mid(Testtest, 1, 1)) * 4
        Xvar = Xvar + Val(Mid(Testtest, 2, 1)) * 3
        Xvar = Xvar + Val(Mid(Testtest, 3, 1)) * 2
        Xvar = Xvar + Val(Mid(Testtest, 4, 1)) * 7
        Xvar = Xvar + Val(Mid(Testtest, 5, 1)) * 6
        Xvar = Xvar + Val(Mid(Testtest, 6, 1)) * 5
        Xvar = Xvar + Val(Mid(Testtest, 7, 1)) * 4
        Xvar = Xvar + Val(Mid(Testtest, 8, 1)) * 3
        Xvar = Xvar + Val(Mid(Testtest, 9, 1)) * 2
        SlutCiffer = Val(Mid(Testtest, 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 Sub
Avatar billede ebea Ekspert
23. maj 2020 - 23:23 #1
Avatar billede anne_n_d Novice
23. maj 2020 - 23:40 #2
Desværre, men den virker ikke :(
Avatar billede supertekst Ekspert
23. maj 2020 - 23:47 #3
Sub ny()
    Dim CPRtest
    Dim Resultat
    Dim SlutCiffer
    Dim Xvar
   
   
    Testtest = Worksheets("Hjem").Range("A6").Value    '<<-- rettet fra F5-->A6
   
    If (Worksheets("Hjem").Range("A6").Value <> "") Then
   
        Xvar = Val(Mid(Testtest, 1, 1)) * 4
        Xvar = Xvar + Val(Mid(Testtest, 2, 1)) * 3
        Xvar = Xvar + Val(Mid(Testtest, 3, 1)) * 2
        Xvar = Xvar + Val(Mid(Testtest, 4, 1)) * 7
        Xvar = Xvar + Val(Mid(Testtest, 5, 1)) * 6
        Xvar = Xvar + Val(Mid(Testtest, 6, 1)) * 5
        Xvar = Xvar + Val(Mid(Testtest, 7, 1)) * 4
        Xvar = Xvar + Val(Mid(Testtest, 8, 1)) * 3
        Xvar = Xvar + Val(Mid(Testtest, 9, 1)) * 2
        SlutCiffer = Val(Mid(Testtest, 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 Sub
Avatar billede store-morten Ekspert
23. maj 2020 - 23:48 #4
Står dit cpr.nr uden mellemrum og - ?
Avatar billede supertekst Ekspert
23. maj 2020 - 23:49 #5
Hvis foranstillet 0 i CPR - så 'foran 0
Avatar billede anne_n_d Novice
24. maj 2020 - 00:05 #6
SuperTekst, tak for dit svar.

har prøvet, den kører, men resultatet kommer ikke frem. DVS Forkert eller ikke forkert.
den skal indsættes i celle F5, har skrevet nedenstående
Hvad jeg mangler så? Kan ikke finde ud af

Sub ny()
    Dim CPRtest
    Dim Resultat
    Dim SlutCiffer
    Dim Xvar
   
   
    Testtest = Worksheets("Hjem").Range("A6").Value   
    Resultat = Worksheets("Hjem").Range("F5").Value
   
    If (Worksheets("Hjem").Range("A6").Value <> "") Then
   

    Xvar = Val(Mid(Testtest, 1, 1)) * 4
        Xvar = Xvar + Val(Mid(Testtest, 2, 1)) * 3
        Xvar = Xvar + Val(Mid(Testtest, 3, 1)) * 2
        Xvar = Xvar + Val(Mid(Testtest, 4, 1)) * 7
        Xvar = Xvar + Val(Mid(Testtest, 5, 1)) * 6
        Xvar = Xvar + Val(Mid(Testtest, 6, 1)) * 5
        Xvar = Xvar + Val(Mid(Testtest, 7, 1)) * 4
        Xvar = Xvar + Val(Mid(Testtest, 8, 1)) * 3
        Xvar = Xvar + Val(Mid(Testtest, 9, 1)) * 2
        SlutCiffer = Val(Mid(Testtest, 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 Sub
Avatar billede anne_n_d Novice
24. maj 2020 - 00:06 #7
meningen er jo, at CPR nr fra Celle "A6" skal testet, og resultatet dvs. er den forkert eller gyldigt CPRnr skal indsættes i celle F5
Avatar billede store-morten Ekspert
24. maj 2020 - 00:45 #8
Prøv, uden garanti:
Sub TestCPR()
Dim txtRegistrantCPR As String
Dim Xvar As Long
Dim SlutCiffer As Long
Dim Resultat As Long

txtRegistrantCPR = Worksheets("Hjem").Range("A6").Value

If txtRegistrantCPR <> "" 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)

    If Resultat = 11 Then
        Resultat = 0
    End If
    If Resultat = SlutCiffer Then
        Worksheets("Hjem").Range("F5") = "Gyldigt"
    Else
        Worksheets("Hjem").Range("F5") = "Forkert"
    End If
    Exit Sub
End If
Worksheets("Hjem").Range("F5") = ""
End Sub
Avatar billede store-morten Ekspert
24. maj 2020 - 01:08 #9
Denne kan teste:
xxxxxx-xxxx
xxxxxx xxxx
xxxxxxxxxx
Sub TestCPR()
Dim Cpr1 As String, Cpr2 As String, txtRegistrantCPR As String
Dim Xvar As Long
Dim SlutCiffer As Long
Dim Resultat As Long

Cpr1 = Replace(Worksheets("Hjem").Range("A6"), "-", "")
Cpr2 = Replace(Cpr1, " ", "")

txtRegistrantCPR = Cpr2

If txtRegistrantCPR <> "" 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)

    If Resultat = 11 Then
        Resultat = 0
    End If
    If Resultat = SlutCiffer Then
        Worksheets("Hjem").Range("F5") = "Gyldigt"
    Else
        Worksheets("Hjem").Range("F5") = "Forkert"
    End If
    Exit Sub
End If
Worksheets("Hjem").Range("F5") = ""
End Sub
Avatar billede Jan K Ekspert
24. maj 2020 - 15:50 #10
Var opmærksom på at Modulus 11 tjek ikke virker på cpr-numre udstedt efter 2007, så her kan du få en falsk negativ.
Avatar billede 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. Der sættes "nofollow" på alle links.

Loading billede 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



IT-JOB

Politiets Efterretningstjeneste

Digital workplace- /klientspecialister til PET

NEM IT-Solutions A/S

IT-driftskonsulent

Staten og Kommunernes Indkøbsservice A/S (SKI)

IT-udvikler

IT & Co ApS

IT-tekniker