verbeteren

Status
Niet open voor verdere reacties.

Hrdstyl3r

Gebruiker
Lid geworden
24 apr 2007
Berichten
129
Hallo,
ik ben bezig met vba maar ik snap niet wat ik fout heb gedan..
Kan iemand deze code voor mij verbeteren??

Code:
Dim random As Integer
Dim getal As Integer
Dim poging As Integer
Dim a As Integer

Private Sub Form_Load()
    Randomize
    getal = Int(Rnd * 1000) + 1
    a = 1000
End Sub
Private Sub RaadGetal_Click()
    If GeefGetal.Txt = "" Then MsgBox ("Je moet wel wat invullen!!")
    If GeefGetal.Txt = "" Then Exit Sub
      poging = GeefGetal.Text
    If poging > 1000 Then MsgBox ("je moet wel een getal invullen" + Chr$(10) + "tussen 1 en 1000")
    If poging > getal Then uitvoer.Caption = GeefGetal.Txt + " is te groot"
    If poging < getal Then uitvoer.Caption = GeefGetal.Txt + " is te klein"
    
    If GeefGetal.Txt = random2 Then
        MsgBox ("Bingo!! het juiste getal is " + Chr$(10) + GeefGetal.Txt)
        uitvoer.Caption = ""
        GeefGetal.Txt = ""
    End If
End Sub
Private Sub NieuwSpel_Click()
       getal = Int(Rnd * 1000) + 1
    GeefGetal.Text = ""
    uitvoer.Caption = ""
   End Sub
Private Sub HulpFunctie_Click()
MsgBox ("hier een overzicht van alle functies van het spel:" + Chr$(10) + Chr$(10) + "nieuw spel = wanneer je hier op klikt start je een nieuw spel" + Chr$(10) + Chr$(10) + "raad getal = wanneer je een getal in het witte balkje hebt ingevuld moet je hier op klikken" + Chr$(10) + Chr$(10) + " het witte balkje is er om een getal tussen de 1 en de 1000 in te vullen " + Chr$(10) + Chr$(10) + "en wanneer je iets in gevuld hebt dan moet je op `raad getal` drukken" + Chr$(10) + Chr$(10) + "wanneer je een berichtje krijgt dat het getal HOGER moet dan moet je een getal HOGER invullen dan dat je nu hebt ingevuld, maar wel onder de 1000" + Chr$(10) + Chr$(10) + "wanneer je een berichtje krijgt dat het getal LAGER moet zijn, dan geef je een getal LAGER dan die je nu hebt ingevuld" + Chr$(10) + Chr$(10) + "wanneer je voor de optie expert gaat dan moet je een getal raden tussen de 1 en de 10000")
End Sub
 
Je moet in iedere geval elke If afsluiten met een End If.

Groet,

Tardis
 
Checken op een lege string in plaats van checken op lengte = 0 duurt veel langer, dus:
Code:
If Len(me.GeefGetal) = 0 Then
   MsgBox "Je moet wel wat invullen!!", vbInformation, "ApplicatieNaam"
endif
Gebruik geen GeefGetal.txt maar me.GeefGetal.value of me.GeefGetal of GeefGetal.

Succes!
 
Er zitten wel een berg vouten in hoor!

Gebruik geen chr$(10) maar vbCrLf.

Zet "Option Explicit" bovenin je module, onder "Option Compare Database"

Dimensioneer Random2
 
Dag H,

De fouten zijn al geneomd dus hieronder mijn poging.

Met Geefgetal_Exit kan alleen de tekstbox worden verlaten als er een getal in staat.

Select Case is een goed alternatief voor If Then.

Optie is de grootse waarde afhankelijk van gewoon en expert.

Tot slot wordt er automatisch naar GeefGetal teruggesprongen.

Code:
Option Explicit

Dim Getal As Integer
Dim Optie As Integer

Private Sub Form_Load()
  Randomize
  Spel
End Sub

Private Sub GeefGetal_Exit(ByVal Cancel As MSForms.ReturnBoolean)
  Cancel = Not IsNumeric(GeefGetal.Value)
End Sub

Private Sub RaadGetal_Click()
  Select Case GeefGetal.Value
  Case 0, Is > Optie
    MsgBox "Je moet wel een geheel getal invullen" & vbCr & "groter dan 0 en kleiner dan" & Optie + 1 & "."
  Case Is > Getal
    Uitvoer.Caption = GeefGetal.Value & " is te groot."
  Case Is < Getal
    Uitvoer.Caption = GeefGetal.Value & " is te klein."
  Case Else
    MsgBox "Bingo!! Het juiste getal is " & vbCr & Getal & "."
    Spel
  End Select
  GeefGetal.SetFocus
End Sub

Private Sub NieuwSpel_Click()
  Spel
  GeefGetal.SetFocus
End Sub

Private Sub HulpFunctie_Click()
  MsgBox "Overzicht van alle functies van het spel:" & vbCr & vbCr & "Nieuw spel = wanneer je hier op klikt start je een nieuw spel." & vbCr & vbCr & "Raad getal = wanneer je een getal in het witte balkje hebt ingevuld moet je hier op klikken." & vbCr & vbCr & "Het witte balkje is er om een getal tussen de 1 en de 1000 in te vullen." & vbCr & vbCr & "Wanneer je een getal hebt ingevuld dan moet je op `raad getal’ drukken." & vbCr & vbCr & "Wanneer je een berichtje krijgt dat het getal HOGER moet dan moet je een getal HOGER invullen dan dat je nu hebt ingevuld, maar wel onder de " & Optie + 1 & "." & vbCr & vbCr & "Wanneer je een berichtje krijgt dat het getal LAGER moet zijn, dan geef je een getal LAGER dan dat je nu hebt ingevuld." & vbCr & vbCr & "Wanneer je voor de optie expert gaat dan moet je een getal raden tussen 1 en 10000."
End Sub

Private Sub Spel()
  Optie = IIf(Expert.Value, 10000, 1000)
  Getal = NieuwGetal = Int(Rnd * Optie) + 1
  GeefGetal.Text = ""
  Uitvoer.Caption = ""
End Sub
Gegroet,

Axel.
 
Dag H,

De fouten zijn al genoemd dus hieronder mijn poging.

Met Geefgetal_Exit kan alleen de tekstbox worden verlaten als er een getal in staat.

Select Case is een goed alternatief voor If Then.

Optie is de grootse waarde afhankelijk van gewoon en expert.

Tot slot wordt er automatisch naar GeefGetal teruggesprongen.

Code:
Option Explicit

Dim Getal As Integer
Dim Optie As Integer

Private Sub Form_Load()
  Randomize
  Spel
End Sub

Private Sub GeefGetal_Exit(ByVal Cancel As MSForms.ReturnBoolean)
  Cancel = Not IsNumeric(GeefGetal.Value)
End Sub

Private Sub RaadGetal_Click()
  Select Case GeefGetal.Value
  Case 0, Is > Optie
    MsgBox "Je moet wel een geheel getal invullen" & vbCr & "groter dan 0 en kleiner dan" & Optie + 1 & "."
  Case Is > Getal
    Uitvoer.Caption = GeefGetal.Value & " is te groot."
  Case Is < Getal
    Uitvoer.Caption = GeefGetal.Value & " is te klein."
  Case Else
    MsgBox "Bingo!! Het juiste getal is " & vbCr & Getal & "."
    Spel
  End Select
  GeefGetal.SetFocus
End Sub

Private Sub NieuwSpel_Click()
  Spel
  GeefGetal.SetFocus
End Sub

Private Sub HulpFunctie_Click()
  MsgBox "Overzicht van alle functies van het spel:" & vbCr & vbCr & "Nieuw spel = wanneer je hier op klikt start je een nieuw spel." & vbCr & vbCr & "Raad getal = wanneer je een getal in het witte balkje hebt ingevuld moet je hier op klikken." & vbCr & vbCr & "Het witte balkje is er om een getal tussen de 1 en de 1000 in te vullen." & vbCr & vbCr & "Wanneer je een getal hebt ingevuld dan moet je op `raad getal’ drukken." & vbCr & vbCr & "Wanneer je een berichtje krijgt dat het getal HOGER moet dan moet je een getal HOGER invullen dan dat je nu hebt ingevuld, maar wel onder de " & Optie + 1 & "." & vbCr & vbCr & "Wanneer je een berichtje krijgt dat het getal LAGER moet zijn, dan geef je een getal LAGER dan dat je nu hebt ingevuld." & vbCr & vbCr & "Wanneer je voor de optie expert gaat dan moet je een getal raden tussen 1 en 10000."
End Sub

Private Sub Spel()
  Optie = IIf(Expert.Value, 10000, 1000)
  Getal = NieuwGetal = Int(Rnd * Optie) + 1
  GeefGetal.Text = ""
  Uitvoer.Caption = ""
End Sub
Gegroet,

Axel.
 
bedankt allemaal !
Het is mij nu gelukt om em werkend te krijgen, topic kan dicht!
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan