Avatar billede megabad Nybegynder
06. november 2002 - 01:46 Der er 13 kommentarer og
2 løsninger

Hjælp til lige og ulige

hej jeg håber i kan hjælpe mig er mega ny i det her.

jeg skal lave en lille makro, der skulle kunne se forskel på lige og ulige i et cpr nr. fx. 241202-1815 jeg ved ikke hvordan jeg få fandt i nr. 5 ? jeg har prøve lidt med den virker ikke

If cpr (cpr, 1, 11) = "1" Or "3" Or "5" Or "9" Then
MsgBox ("Det er en Dreng")
Else
MsgBox ("Det er en Pige")
End If

Håber i kan hjælpe mig hurtig.
Avatar billede jelzin101 Praktikant
06. november 2002 - 01:51 #1
et lille hint... operatoren "mod" returnerer en divisonsrest dvs. hvis du laver et tjek på sidste tal og siger (tal mod 2) så er lige tal = 0 :)
Avatar billede jelzin101 Praktikant
06. november 2002 - 01:55 #2
hvad er der galt med mit svar ?
Avatar billede megabad Nybegynder
06. november 2002 - 01:56 #3
som sagen er, jeg er mega ny i det her og ved ikke så meget om VB
Avatar billede megabad Nybegynder
06. november 2002 - 01:57 #4
prøv at vis mig det du mener
Avatar billede jelzin101 Praktikant
06. november 2002 - 01:58 #5
du beder om hjælp til at finde ud af hvordan man finder ud af hvorvidt et tal er lige eller ulige, - jeg fortæller dig at hvis du siger (tal mod 2) og dette giver 0 er tallet lige. -simplere kan det simpelthen ikke udtrykkes.
Avatar billede jelzin101 Praktikant
06. november 2002 - 01:59 #6
"prøv at vis mig det du mener"

if (tal mod 2) = 0 then
msgbox("det er en pige")
end if
Avatar billede jelzin101 Praktikant
06. november 2002 - 02:01 #7
svar.
Avatar billede jelzin101 Praktikant
06. november 2002 - 02:04 #8
hvis du vil vide mere om vb, kan jeg varmt anbefale www.vbsquare.com hvor du kan finde masser af tuts mm. til at komme godt igang.

/jelzin
Avatar billede sjh Nybegynder
06. november 2002 - 02:05 #9
Prøv sådan:

Dim tcpr As Variant
tcpr = cpr(cpr, 1, 11)
  If tcpr = "1" Or tcpr = "3" Or tcpr = "5" Or tcpr = "9" Then
    MsgBox ("Det er en Dreng")
      Else
    MsgBox ("Det er en Pige")
  End If
Avatar billede jelzin101 Praktikant
06. november 2002 - 02:15 #10
eller

if cpr(cpr, 1, 11) mod 2 = 0 then
msgbox("pige")
else
msgbox("dreng")
end if

sjh>> er det egentligt nødvendigt at type tcpr i dit eksempel, - jeg gik ud fra at vb pr. def. bruge "variant" til udef. variabler?

/jelzin
Avatar billede megabad Nybegynder
06. november 2002 - 11:36 #11
jeg tror det er nemmere hvis i ser det hele, men vil også lige sige at det er lave i word

Sub Opgave_4()
'
' Opgave_4 Makro
' Makro oprettet 05-11-2002 af VomarE
'
Dim cpr, sum, vgt, nr, tcpr
cpr = 1
Do While Len(cpr) < 11 ' Denne linje måler på længden af cpr nummeret
    cpr = InputBox("Indtast cpr nummer fx 201097-????")
If Mid(cpr, 7, 1) <> "-" Then ' Den her fortæller at tegn nr. 7 skal være -
    cpr = 1 ' goto
    MsgBox ("Du skal huske -" & vbCeLf & "Og du skal huske at cpr nummeret skal være på 11 tegn")
ElseIf Len(cpr) <> 11 Then
    cpr = 1 ' goto
    MsgBox ("Dit cpr nummer er for lagt" & vbCrLf & " Der skal være 11 tegn")
    End If
    Loop
    vgt = 43276504321# 'Faktorer vægter skal gangen med samme placering som i cpr nummeret _
    cpr nummeret
    sum = 0
    For nr = 1 To 11 ' Det er de 11 cifre der er i et cpr nummer
If nr <> 7 Then  ' Hvis nr. 7 er et (-) skal den gå videre
    sum = sum + Mid(vgt, nr, 1) * Mid(cpr, nr, 1) ' Beregner de to tal for at tjekke om der er rigtigt
    End If
    Next
If sum Mod 11 = 0 Then  ' Hvis udregnings måden mod 11 er = 0 er den sand ellerd flask
        MsgBox ("cpr-Nr er godkendt")
    Else
    MsgBox ("Cpr-Nr er falsk")
    End If

If cpr(cpr, 1, 11) = "1" Or "3" Or "5" Or "9" Then
    MsgBox ("Det er en Dreng")
Else
    MsgBox ("Det er en Pige")
    End If
Avatar billede sjh Nybegynder
06. november 2002 - 11:55 #12
jelzin101 < Det er bare en gammel vane, men det bruge "variant" til udef. :-)
Avatar billede megabad Nybegynder
07. november 2002 - 13:05 #13
jeg har endnu bruge for hjælp da den ikke virker
Avatar billede rynke10 Novice
07. november 2002 - 17:07 #14
er det ikke i det sidste det går galt for dig.
Du skriver :
If cpr(cpr, 1, 11) = "1" Or "3" Or "5" Or "9" Then
    MsgBox ("Det er en Dreng")

Skulle det ikke være :
If mid(cpr, 11, 1) =

eller med mod :

If (Mid(cpr, 11, 1)) Mod 2 = 1 Then
MsgBox ("dreng")
Else
MsgBox ("pige")
End If
Avatar billede arnvig Nybegynder
07. november 2002 - 18:02 #15
du bruger cpr som en funktion i
If cpr(cpr, 1, 11) = "1" Or "3" Or "5" Or "9"

Jeg gætter på at det skulle være MID$(cpr,11,1)
(Du har også byttet rundt på start og længde argumenterne)
Problemet er at "cpr" er dimmet som variant og du bruger den både som
string, integer og function . Det er noget skidt programmering, som vil give problemer før eller siden.
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