Avatar billede mercu Nybegynder
18. november 2009 - 15:32 Der er 7 kommentarer og
1 løsning

Tæller skifter ikke?

Jeg sidder med et mindre problem.

Jeg har lavet en tæller som skal generere tal på formlen 0001, 0002, osv optil 9999. Men tælleren skifter ikke den siger hele tiden 0001.

Min kode er som følger:

Dim dag As String
Dim md As String
Dim år As String
Dim CPR As Long
Dim i As Integer
Dim a As Integer, b As Integer, c As Integer, d As Integer, e As Integer, f As Integer, g As Integer, h As Integer
Dim j As Integer
Dim løbenummer As String
Dim testsum As Long


Do
check_dato = True

dato = InputBox("indtast fødselsdagen du ønsker at finde CPR numre for DDMMÅÅÅÅ", "Fødselsdato boks")
dag = (Left(dato, 2))
md = (Mid(dato, 3, 2))
år = (Right(dato, 4))


If dag * 1 < 1 Or dag * 1 > 31 Then check_dato = False
If md * 1 < 1 Or md * 1 > 12 Then check_dato = False
If år * 1 < 1858 Or år * 1 > 2057 Then check_dato = False

If check_dato = False Then MsgBox ("Den indtastede dato er forkert")

Loop Until check_dato = True

'hvis den indtastede dato er korrekt begynder jeg at finde CPR 'numre som opfylder modulus 11 tjekket. Jeg benytter den angivne 'fødselsdag og laver en tæller som går fra 0001 - 9999 og bruger 'tælleren som løbe nummere.

If check_dato = True Then

For i = 1 To 9999
løbenummer = Format(i, "000#")


  a = Mid(dag, 1, 1)
    b = Mid(dag, 2, 1)
    c = Mid(md, 1, 1)
    d = Mid(md, 2, 1)
    e = Mid(år, 3, 1)
    f = Mid(år, 4, 1)
    g = Mid(løbenummer, 1, 1)
    h = Mid(løbenummer, 2, 1)
    i = Mid(løbenummer, 3, 1)
    j = Mid(løbenummer, 4, 1)

Next

End If

End Sub
Avatar billede michael_stim Ekspert
18. november 2009 - 16:04 #1
Har inte med spørgsmålet at gøre, men tænk på at man ikke kan bruge mod11 tjekket mere. Bare lige en oplysning, hvis det er noget der skal bruges professionelt.
Avatar billede mercu Nybegynder
18. november 2009 - 16:10 #2
#1

Det er en opgave, som er stillet således vi skal bruge modulus 11 tjekket.

At det ikke virker mere er vist ikke så relevant da ideen i opgaven primært er vi skal lære VBA.
Avatar billede tjacob Juniormester
18. november 2009 - 16:37 #3
Hvad er dit For Next Loop til?

Du foretager dig jo intet?
Du skriver den samme værdi til a,b,c,d,e,f 9999 gange?
Du skriver en værdi til g,h,i,j 9999 gange, men de gemmes jo ingen steder?

Desuden er der en fejl: Du bruger i både som tæller i For Next loopet, men du giver den en ny værdi midt i loopet: i = Mid(løbenummer, 3, 1). Det kan man ikke.
Avatar billede tjacob Juniormester
18. november 2009 - 16:39 #4
Derfor er i altid 0 og dit løbenummer altid 0001
Avatar billede tjacob Juniormester
18. november 2009 - 16:40 #5
.....altid 1
Avatar billede mercu Nybegynder
18. november 2009 - 16:47 #6
Jeg ville ikke kopiere mere kode end højst nødvendigt.

Mit for next loop skal bruges til at jeg udfra fødselsdagen samt tælleren laver CPR_numre, som tjekkes med modulus 11.

Hvis modulus 11 opfyldes noteres CPR nummeret som "godkendt" og skrives ud på worksheet.
Avatar billede tjacob Juniormester
18. november 2009 - 18:04 #7
OK, -som nævnt er det i = Mid(løbenummer, 3, 1) der skaber dit problem. Her skal du bruge en anden variabel, og KUN bruge i som indekstæller i For Next loopet.
Avatar billede mercu Nybegynder
18. november 2009 - 18:36 #8
Nu fungere mit første problem.
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
Kategori
Kurser inden for grundlæggende programmering

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