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 Sub
Tä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 Sub
Jos 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.