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
ebea Ekspert
23. maj 2020 - 23:23 #1
anne_n_d Novice
23. maj 2020 - 23:40 #2
Desværre, men den virker ikke :(
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
store-morten Ekspert
23. maj 2020 - 23:48 #4
Står dit cpr.nr uden mellemrum og - ?
supertekst Ekspert
23. maj 2020 - 23:49 #5
Hvis foranstillet 0 i CPR - så 'foran 0
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
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
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
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
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.
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
En arbejdsuge på fire dage gjorde danske IIH Nordic berømt, men under coronakrisen har selskabets CEO indset, at der skal tages nye midler i brug
Danske IIH Nordic er blevet hædret for sit arbejdsmiljø, og under coronakrisen er medarbejderne blevet endnu mere tilfredse. Nu har selskabets topchef Henrik Stenmann indset, at den firedages arbejdsuge ikke kan stå alene.
Computerworld
IBM fyrer tusindvis af medarbejdere i stor fyringsrunde
Med IBM’s nytiltrådte topchef ved roret fyrer selskabet nu tusindvis af medarbejdere i stor fyringsrunde, der sigter blandt andet efter at gøre selskabet mere agilt.
CIO
Podcast: Pandoras CIO Peter Cabello afslører sine tre vigtigste mål for digitaliseringen
Podcast, The Digital Edge: Hør Pandoras CIO Peter Cabello Holmberg fortælle om, hvordan et af verdens største smykkefirmaer arbejder med innovation og digitalisering af et traditionel offline salg, og hvordan Pandora udnytter data til at skabe en bedre kundeoplevelse.
Job & Karriere
10 spændende lederstillinger, som er ledige netop nu
Der er stadigvæk mange ledige it-job. Vi har fundet en række spændende lederstillinger, som du kan søge med det samme.
White paper
Stor rapport kortægger: Sådan er kundernes forventninger til en moderne kundeservice
Kender du din målgruppes foretrukne kanal til annoncering, salg og kundeservice? Ved du om salg og kundeservice arbejder godt nok sammen? Og i hvilken grad lever du op til kundernes forventninger? De spørgsmål kan du finde svar på i dette whitepaper fra Zendesk, som via knapt 5.000 interviews og spørgeskemaer har kortlagt både kunder og customer experience-folks erfaring og forventninger til en god kundeoplevelse. Whitepaperet er derfor en oplagt og overskuelig målestok, for dig der arbejder med customer experience og vil benchmarke sin egen indsagt – eller til dig, der skal til at etablere en moderne kundeoplevelse og vil prioritere indsatsen korrekt.