Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien

[VBA]geen punt en komma

Pagina: 1
Acties:

  • Sanity11
  • Registratie: Januari 2004
  • Niet online
Ik probeer ervoor te zorgen dat er alleen nummerieke waarden in een tekstbox gezet kunnen worden.
Dus ook geen komma's en punten.

Daarvoor heb ik het volgende stukje code gemaakt:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
Private Sub txtTravelKilom_Change()
If blnReset = True Then
Else
If Len(txtTravelKilom) > 0 Then
n = Len(txtTravelKilom.Text)
        For l = 1 To n
            strWaarde = Mid(txtTravelKilom.Text, l, 1)
            If Not strWaarde = "," And Not strWaarde = "." And Not IsNumeric(strWaarde) = False Then
                new_price
            Else
                txtTravelKilom.Text = Mid(txtTravelKilom.Text, 1, n - 1)
                MsgBox ("Only nummeric values please")
            End If
            If n = 0 Then
                new_price
            End If
        Next l
    End If
   
End If
End Sub


Dit werkt perfect voor de letters, maar ik kan gewoon comma's en punten invoeren.Weet iemand hoe ik dit kan oplossen?

www.diovisuals.co,


  • KoW
  • Registratie: Juli 2001
  • Laatst online: 17-08-2022

KoW

Parse parsed te veel

Zoek eens op Inputmask

Dat doet bovenstaande automatisch

  • urk_forever
  • Registratie: Juni 2001
  • Laatst online: 29-11 17:06
Waarom doe je zo moeilijk, in je keydown event krijg je de ascii waarde van de toets die aangeslagen is, die kan je checken of dat een nummer is en dan eventueel de toets aanslag annuleren waardoor er helemaal niks ingevoerd wordt.

Zie ook deze link:

http://msdn2.microsoft.co.../aa211398(office.11).aspx

Of je kan het keypress event gebruiken:
http://msdn2.microsoft.co.../aa211401(office.11).aspx

Voorbeeldje
Visual Basic:
1
2
3
4
5
Private Sub Text1_KeyPress(KeyAscii As Integer)
  If (KeyAscii < 48 Or KeyAscii > 57) And (KeyAscii <> 8) Then
    KeyAscii = 0
  End If
End Sub

[ Voor 47% gewijzigd door urk_forever op 29-10-2007 09:42 ]

Hail to the king baby!


  • Niemand_Anders
  • Registratie: Juli 2006
  • Laatst online: 09-07-2024

Niemand_Anders

Dat was ik niet..

Je zegt dat je alleen maar numerieke waardes wilt accepteren.

dan is de vergelijk (op regel 8 ) toch gewoon
Visual Basic:
1
2
3
4
5
6
7
8
if (IsNumeric(strWaarde) = false)
  txtTravelKilom.Text = Mid(txtTravelKilom.Text, 1, n - 1)
  MsgBox("Only nummeric values please")
  exit sub
end if

'wordt alleen aangeroepen als IsNumeric nooit false is geweest. 
new_price()  'aanname dat dit wordt aangeroepen bij een correct getal


Vergeet niet om eventuele spaties voor of achter het geval te verwijderen (trim), omdat je anders een false positive kunt gebruiken (een spatie is immer niet een getal).

If it isn't broken, fix it until it is..


  • Sanity11
  • Registratie: Januari 2004
  • Niet online
OK! Dat kan dus allemaal veel gemakkelijker. :)
Ik ga het meteen proberen!

www.diovisuals.co,