Avatar billede lillehans Nybegynder
23. april 2006 - 16:06 Der er 11 kommentarer og
1 løsning

Respekterer ikke min if-kode

Jeg troede at jeg med denne kode kunne styre hvilke tal der dukkede op på mine labels. Det kan jeg ikke.
Hvad er der galt med min kode?

Private Sub Command8_Click()
On Error Resume Next
tabel = Val(Text12.Text)
  If tabel = 1 Then
        Randomize
        tal1 = Int((1 * Rnd) + 1)
        tal2 = Int((10 * Rnd) + 1)
   
      Label15.Caption = tal1
        Label17.Caption = tal2

End If


  If tabel = 2 Then
        Randomize
        tal1 = Int((2 * Rnd) + 1)
        tal2 = Int((10 * Rnd) + 1)
       
        Label15.Caption = tal1
        Label17.Caption = tal2

End If


If tabel = 3 Then

        Randomize
        tal1 = Int((3 * Rnd) + 1)
        tal2 = Int((10 * Rnd) + 1)
       
        Label15.Caption = tal1
        Label17.Caption = tal2
    End If
End Sub
Avatar billede rynke10 Novice
23. april 2006 - 16:36 #1
Dim tabel, tal1, tal2 as byte

virker det så ikke ?
Ellers skifter den teksten på dine labels som jeg går ud fra at den skal.

Hvis du lige vil have det lidt kortere :-)

Private Sub Command8_Click()
On Error Resume Next
Dim tabel, tal1, tal2 As Byte

  tabel = Val(Text12.Text)
  Randomize
  tal2 = Int((10 * Rnd) + 1)
  If tabel = 1 Then
    tal1 = Int((1 * Rnd) + 1)
  ElseIf tabel = 2 Then
    tal1 = Int((2 * Rnd) + 1)
  ElseIf tabel = 3 Then
    tal1 = Int((3 * Rnd) + 1)
  End If
    Label15.Caption = tal1
    Label17.Caption = tal2
End Sub
Avatar billede lillehans Nybegynder
23. april 2006 - 16:51 #2
>Jeg må hellere fortælle hvad det er jeg vil lave.
Det er til brug for tabeløvning.

label15 og 17 indeholder tilfældige tal.
Disse talværdier skal ganges med hinanden, og produktet anbringes i text1.text
Hvis man vælger 1-tabellen bliver det ene tal konstant(1) og det andet tilfældigt.
Men hvis jeg vil øve 1-tabellen må det altså ikke være fx 2 x 7, for det er jo 2-tabellen.
Er det klart, hvad jeg mener?
Avatar billede rynke10 Novice
23. april 2006 - 16:58 #3
Skal du så ikke bare beholde dit tal i text12.text og ikke lave en random mellem 1 og 3. Altså bare gange med tallet som du har i forvejen?

Forstår jeg det rigtigt, så kan du droppe if sætningen og bare skrive

tal2 = Int((10 * Rnd) + 1)
Label15.Caption = text12.text
Label17.Caption = tal2
Avatar billede lillehans Nybegynder
23. april 2006 - 17:13 #4
Jo,principielt. Det prøvede jeg også indledningsvis men kunne ikke få det til at fungere. Derfor valgte jeg bare at holde det ene tal konstant i random.
Men koden skal gælde for samtlige tabeller fra 1-20, så jeg er nødt til at have en if-sætning. Næste gang der skal udregnes nogle stykker, er det måske 13-tabellen, der skal bruges.
Altså tallene på labels skal brugeren gange og placere resultatet i en text.box. Derefter tjekkes tallet i textboxen og der kaldes til nogle standardsvar afhængig af svarets rigtighed.
Avatar billede lillehans Nybegynder
23. april 2006 - 17:17 #5
Nå ja, mere fuldstændigt forestil dig at jeg skal øve mig i 7-tabellen. Når jeg ikke gider det mere, taster jeg 8 i tabelboxen og jeg kan så øve mig på den tabel osv,
Avatar billede rynke10 Novice
23. april 2006 - 17:38 #6
Prøv lige fælgende:
2 textboxe, 2 labels og 2 knapper på en form. Smid følgende ind og leg med det.

Option Explicit

Private Sub Command2_Click()
  If Val(Label1.Caption) * Val(Label2.Caption) = Val(Text2.Text) Then
    MsgBox "det var rigtigt", vbInformation
  Else
    MsgBox "forkert, prøv igen", vbCritical
  End If
End Sub

Private Sub form_load()
  Command1.Caption = "bland tal"
  Command2.Caption = "kontroller resultat"
  Text1.Text = "tabel"
  Text2.Text = "resultat"
End Sub
Private Sub Command1_Click()
  On Error Resume Next
  Dim tal1 As Byte
  Randomize
  tal1 = Int((10 * Rnd) + 1)
  Label1.Caption = Text1.Text
  Label2.Caption = tal1
End Sub
Avatar billede rynke10 Novice
23. april 2006 - 17:40 #7
I text1.text kan du jo så indtaste alle de tal du har lyst til, 23 tabellen for den sags skyld. Du skal bare gange tallene i label1 og label2 og skrive resultatat i text2.text. Så kontrolleres resultatet når du trykker på resultat.
Avatar billede rynke10 Novice
23. april 2006 - 17:43 #8
he he, du kan sætte en variabel samtidig med msgboxen, så kan du tælle hvor mange forsøg der er rigtige og hvor mange der er forkerte.
Avatar billede rynke10 Novice
23. april 2006 - 18:00 #9
Sengetid, her på den anden side af jorden er det midnat nu. Kigger i morgen hvis der er mere :-)
Avatar billede lillehans Nybegynder
23. april 2006 - 18:36 #10
>rynke10, OK, men så skal jeg synge en godnatsang for dig:
Melodi: Rynke kan bare det gylle med VB.
Mange tak for hjælpen rynke10, det hele fungerer nu, og jeg har sparet ca. 20 koder.
:o))
PS Jeg tror du får mareridt i nat: Du har glemt at lave et svar! :D
Avatar billede rynke10 Novice
24. april 2006 - 02:01 #11
Jeg sov nu fint nok, men svaret kommer da her ;-)
Avatar billede lillehans Nybegynder
24. april 2006 - 09:06 #12
Tak for hjælpen!
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