Minulla on text1 ja siihen pitäisi saada numeroita, muttei ollenkaan kirjaimia. jos siihen laitetaan kirjaimia niin ohjelma lätkäisee MsgBoxin joka huomauttaa jotain.
if IsNumeric(text1.text) then msgbox "Juu kul sii o vaan numeroi"
ton pitäs kait toimii...
Tai sitten tutkit joka kerta text1:n sisällön, kun sen sisältö muuttuu (text1.change) eli skannaat sen kirjainten varalta. Esim.
Sub Text1_Change ()
Dim a As Integer
For a = 1 To Len(text1.Text)
If Mid$(text1.Text, a, 1) < "0" Or Mid$(text1.Text, a, 1) > "9" Then
MsgBox ("Vain numeroita, kiitos")
'Tähän sitten, mitä tehdäänkin...
Exit For
End If
Next a
End SubTässä vielä kolmas ratkaisutapa. Jos tekstikenttään kirjoitettu merkki ei ole erikoismerkki eikä numero, näytetään virheilmoitus ja merkki poistetaan.
Private Sub Text1_KeyPress(KeyAscii As Integer)
If KeyAscii > Asc("9") Then
MsgBox "Ei kelpaa!"
SendKeys "{BKSP}" 'BackSpace-näppäimen "painaminen"
End If
End SubJos tekstin vaadittu muotoilu on monimutkainen (tässä tapauksessa ei ole) voi Masked Edit -kontrolli olla hyödyllinen.
Kiitokset vaan, tuo IsNumeric riitti tähän hätään.
Laaksosen esimerkissä SendKeysin tilalla olisi parempi ehkä vaan sijoittaa KeyAscii:n arvo 0 (koska kirjain lisätään boksiin vasta kun _KeyPress on käsitelty), SendKeys kikkailut ovat aina mitä ovat.
Aihe on jo aika vanha, joten et voi enää vastata siihen.