Finns det något enkelt sätt att hindra en användare att skriva in tex bokstäver i ett fält som bara skall ha siffror?? Är fältet kopplat till en databas kan du sätta egenskapet på fältet till numeriskt. Hur menade du nu?? Prova detta då : Frågan är lika gammal som VB. Ja, den är ju klart mer heltäckande. Självklart, det är liksom meningen med sådana här Forum. tack för det, men det sista håller jag inte riktigt med om... Tänkte även skriva det, håller helt med,men får ofta mothugg på detta.Styra Datainmatning
Sv: Styra Datainmatning
Sv:Styra Datainmatning
Man skall skriva in ett tal som jag har för att hämta data i en databas.....
Blir så konstiga fel om man skriver in en bokstav i söksträngen...
Tänkte mest om det gick att fylla i godkända tecken?Sv: Styra Datainmatning
<code>
Private Sub Text1_KeyDown(KeyCode As Integer, Shift As Integer)
If KeyCode < 48 Or KeyCode > 57 Then
MsgBox ("fel i inmatning")
End If
End Sub
</Code>Sv:Styra Datainmatning
Så här gör jag konsekvent. Rex förslag funkar också men bara på siffror.
<code>
Private Sub Text1_KeyPress(KeyAscii As Integer)
'Normalt bör du tillåta dessa tecken tillsammans med siffror
'BackSpace, Tab, Enter, Komma, Minustecken, Punkt och 0 - 9
Select Case KeyAscii
Case 8, 9, 13, 44, 45, 46, 48 To 57
' Tillåt
'här byter du sida på 44 och 46 efter önskemål ,komma(,) punkt(.)
If KeyAscii = 44 Then KeyAscii = 46 ' Här byter jag ut komma till punkt
' så här bör det vara konsekvent
' If KeyAscii = 44 Then KeyAscii =46
Case Is = 22 'användaren klistrar in Ctrl+V
If IsNumeric(Clipboard.GetText) Then _
Text1.Text = Replace(Clipboard.GetText, ",", ".") 'byter komma till punkt vid Ctrl+V (Klistra in)
Clipboard.Clear
Case Else
KeyAscii = 0
End Select
End Sub
</code>
Efter många års strul med Nationella inställningar <b>komma(,) vs punkt(.)</b> så använder jag alltid
<b>punkt(.)</b> i matematik när jag designar program.
Sedan använder jag <b>Val(stringexpression) resp Str$(number)</b> för omvandlingar.Sv: Styra Datainmatning
Jag uppfattade det som att det alltid gäller ett heltal.
Om det är OK Sven, så adopterar jag den koden och lägger i min utility-dll.
mvh
MartinSv:Styra Datainmatning
Sen är det bättre att använda Keypress för sådana här trix.
Keycode kör man bäst mot F kapparna och pilknapparna mfl.
Vivela Open Source codeSv: Styra Datainmatning
Exempelvis pil-tangenter kan vara väldigt bra att kunna känna av även KeyUp.
/Martin
edit : sorry, läste ditt inlägg för dåligt....det var ju det du sa.....Sv:Styra Datainmatning
En enkel kod för Er som vill kolla vad Vi skriver om. En Form med en Label1
Oftast är det ett måste att sätta Formens KeyPreview = True
<code>
Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
Label1.Caption = KeyCode
End Sub
Private Sub Form_KeyUp(KeyCode As Integer, Shift As Integer)
Label1.Caption = KeyCode
End Sub
</code>
Därefter lägger man till en
Select Case KeyCode
Case Is = 38
'Gör något
Case Is = 123
' do youre stuf
'Case osv
' ****
End Select