Waarom fout?

Status
Niet open voor verdere reacties.

JJZijlstra

Gebruiker
Lid geworden
26 nov 2013
Berichten
283
Beste lezer,

Voor oefening heb ik een rekenmachine gemaakt. Op zich werkt dat goed, maar bij foute invoer gaat het mis, bv. gebruik van een cijfer en een letter.
Het gaat om de volgorde,
bij gebruik van On Error krijg ik namelijk eerst een foutmelding wanneer ik juist wel 2 getallen invoer. Dit zou niet moeten gebeuren.
Bij KeyAscii krijg ik een officieel vba-scherm met foutmelding 13. Hier zou mijn MsgBox moeten verschijnen.

Ligt het aan de volgorde van programmeren?
Bij invoer van getallen in beide tekstvelden zou je juist geen foutmelding moeten hebben.

Een bestandje is heb ik hierbij ingesloten.

Vriendelijke groet,
Toby
 

Bijlagen

  • Rekenmachine.xlsm
    20,6 KB · Weergaven: 33
De simpele oplossing:

Je On Error regel staat fout, maak er dit van:
Code:
Private Sub CommandButton1_Click()
    On Error GoTo fout
    Label3 = txtX * txtY
fout:
    MsgBox "In de eerste of tweede box is sprake van verkeerde invoer", vbCritical, "Foute invoer"
End Sub

De controle met KeyAscii kan je beter in het _KeyPress event van de TextBox gebruiken:
Bekijk bijlage Rekenmachine.xlsm
 
Laatst bewerkt:
Dank je voor je reactie, Edmoor.

Ik zie dat deze nu geheel correct werkt.
Met
HTML:
If KeyAscii < 48 Or KeyAscii > 57 Then KeyAscii = 0
Uit bovengenoemde regel begrijp ik dat alleen getallen zichtbaar mogen zijn en de rest niet.

Groet,
Toby
 
Die regel betekent inderdaad dat alleen cijfers worden geaccepteerd in die textboxen.

Iets netter schrijf je dat zo:
Code:
Private Sub txtX_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
    KeyAscii = IIf(KeyAscii < 48 Or KeyAscii > 57, 0, KeyAscii)
End Sub
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan