Mikä asetus on pielessä, kun TextBoxsiin kirjoittaa ja sen jälkeen nuolinäppäimellä poistaa merkkejä oikealta alkaen, sitten kun viimeinenkin merkki on poistettu tulee ilmoitus
Runtime error"13"
Type mismatch
No onko sinulla minkälaista koodia ohjelmassa jo valmiina? Laitappa joku osa tähän, jos on.
Mikähän VB-versio sinulla on ja millainen koodi tuossa nuolinäppäimessä. Normaalistihan nuolinäppäin siirtää vain kursoria eikä poista merkkiä vai tarkoititko BackSpace-näppäintä. Sillä ei pitäisi mitään virheilmoitusta tulla vaikka TextBox on tyhjä. (taas meni vastaukset päällekkäin!)
Juu se on toi BackSpace eikä nuolinäppäin.
Private Sub Text10_Change()
xakseli = Text10.Text
piirra3d
End Sub
Tuo xakseli kohta maalautuu keltaiseks ja sit tulee toi virheilmoitus.
koodin alussa on
Private xakseli As Integer
Ja versio on VB 6.0
Tohon texboxsiin olis tarkotus syöttää vaan numeroita onko tuo integer silti väärä
lainaus:
Tohon texboxsiin olis tarkotus syöttää vaan numeroita onko tuo integer silti väärä
Kokeileppa laittaa integerin tilalle long
Sama homma
pitäiskö se sitten laittaa string ja muuttaa se sen jälkeen numeraaliseks muuttujaks ettei herjaa muualla koodissa.
Tyhjää merkkiä ei voi muuttaa numeroksi. Siitä se ilmeisesti herjaa. Lisää if-lause, jolla muutat tyhjän nollaksi. Tai no oikeastaan Val-funktiolla voi tyhjän muuttaa nollaksi.
Miten tarkoitit toi ei ainakaan toiminut?
Private Sub Text10_Change()
If Text10.Text = "" Then xakseli = 0
xakseli = Text10.Text
piirra3d
End Sub
ja onhan siinä näköjään vielä tuo jos laittaa vahingossa kirjaimia herjaa täytyy varmaankin tehdä se ton stringin kautta, vai mikä on käytäntö jos haluaa, että vain pelkkiä numeroita saisi syöttää kenttään?
Tolla tavalla toimii parennmin.
Private Sub Text10_Change() If Text10.Text = "" Then Text10.Text = 0 xakseli = Text10.Text piirra3d End Sub
Juu noi toimii, heh.. paitsi kun se on tyhjä ja alkaa laitaa numeroita niin se nolla jää "pyörii" sinne perään.
Miten toi on jos haluan ettei siihen pystyisi kirjoittaa muutakun numeroita pitäiskö ne kaikki numerot käydä läpi
if Text10.Text = 0 OR Text10.Text = 1 OR Text10.Text = 2 jne...
Lisää KeyPress-tapatumaan suodin:
Dim X As String X = Chr(KeyAscii) If Text10 = "0" Then Text10 = "" '0 ei jää pyörimään If InStr("0123456789." + Chr(9), X) = 0 Then KeyAscii = 0 'Chr(9) = BacSpace
Eikö kukaan tunne IsNumeric()-funtiota?
xakseli = IIf(IsNumeric(Text10.Text),CInt(Text10.Text), 0 piirra3d
Ja jos haluat enemmän suoritusta ehdon sisälle niin
If IsNumeric(Text10.Text) then xakseli = CInt(Text10.Text) Else Text10.Text=0 xakseli = 0 End if piirra3d
Varmaan moni tuntee. Tuo suodin estää väärät merkit tykkänään, joten niitä ei tarvitse korjailla. Toisaalta tuo IsNumeric on vain VB6:ssa. Tässähän se kyllä käy kun kyse on juuri siitä versiosta.
kiitos, tuosta soveltamalla pääsen haluamaani lopputulokseen.
Aihe on jo aika vanha, joten et voi enää vastata siihen.