Hej! <code> Kanske en enklare lösning.. Du kan självklart göra det med API: Göran. Jag skulle inte klassa ditt exempel som användarvänligt. Faen vad Ni strular med detta elementära problem. Gör så här > Case Is = 22 'användaren klistrar in Ctrl+V <b>Jag brukar klistra in med Shift-Insert. Vad händer då? </b> Om uttrycket är numeriskt och inget annat tecken förekommer tex , eller . fungerar mitt exempel alldeles utmärkt.Man ska inte kunna skriva bokstäver i textbox
Jag undrar hur man gör för att det endast ska gå att skriva siffror i en textbox?!
Tacksam för svar
//MikaelSv: Man ska inte kunna skriva bokstäver i textbox
Private Sub Text1_KeyPress(KeyAscii As Integer)
If (KeyAscii < 48 Or KeyAscii > 57) And KeyAscii <> 8 And KeyAscii <> asc("-") Then KeyAscii = 0
End Sub
</code>
Källa: http://forums.dreamincode.net/showtopic12812.htm
Ej testat men det ser "korrekt" ut. :)
Lycka till och god jul.
/bjSv:Man ska inte kunna skriva bokstäver i textbox
Private Sub Text1_Change()
If Len(Text1)>=1 then
If Not IsNumeric(Text1) Then
Text1=""
MsgBox"Inga bokstäver här"
end if
end if
End Sub
//GöranSv: Man ska inte kunna skriva bokstäver i textbox
Private Declare Function SetWindowLong Lib "user32" Alias _
"SetWindowLongA" (ByVal hwnd As Long, _
ByVal nIndex As Long, _
ByVal _
dwNewLong As Long) As Long
Private Declare Function GetWindowLong Lib "user32" Alias _
"GetWindowLongA" (ByVal hwnd As Long, _
ByVal nIndex As Long) As Long
Private Const GWL_STYLE As Long = (-16)
Private Const ES_UPPERCASE As Long = &H8&
Private Const ES_LOWERCASE As Long = &H10&
Private Const ES_NUMBER As Long = &H2000
Sub OnlyNumeric(TextBox As TextBox)
Dim DefStyle As Long
DefStyle = GetWindowLong(TextBox.hwnd, GWL_STYLE)
Call SetWindowLong(TextBox.hwnd, GWL_STYLE, DefStyle Or ES_NUMBER)
End Sub
Private Sub Form_Load()
OnlyNumeric Text1
End Sub
Sv: Man ska inte kunna skriva bokstäver i textbox
Om användaren matar in ett belopp, råkar slinta på en tangent, och förlorar införd data.
En lämpligare lösning är då:
Sub RestoreNumeric(TextBox As TextBox)
Dim pos As Long
If IsNumeric(TextBox.Text) Then
TextBox.Tag = TextBox.Text
Else
pos = TextBox.SelStart
TextBox.Text = TextBox.Tag
TextBox.SelStart = pos
End If
End Sub
Private Sub Text2_Change()
RestoreNumeric Text2
End Sub
Sv:Man ska inte kunna skriva bokstäver i textbox
<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 = 46 Then KeyAscii = 44
' 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, ",", ".")
Clipboard.Clear
Case Else
KeyAscii = 0
End Select
End Sub
</code>Sv: Man ska inte kunna skriva bokstäver i textbox
Jag brukar klistra in med Shift-Insert. Vad händer då?Sv:Man ska inte kunna skriva bokstäver i textbox
You are "fucked" ;-)
Can´t win them all.
Gott Nytt År
SvenSv: Man ska inte kunna skriva bokstäver i textbox
För övrigt tar jag kritiken på allvar och har tacksamt noterat kod-exemplen.