Jag har ett formulär med 2 st textrutor som jag bara vill ska acceptera Om du har följande kod så bör det nog fungera: Hej Mycket snyggare att använda vbKeyXXXX konstanterna T.ex vbKeyReturn för 13(Enter).bara siffror och komma + msg box
siffror och komma, och att det ska komma upp en msgbox,
så jag skrev först koden under text1-keypress mm.
och sedan skrev jag om den under samma på text2-keypress, och
då funkade det hur bra som helst, men sen när jag gjorde en funktion av det hela och anropade funktionen under text1 samt text2 funkade det inte lika bra. boxen kommer upp, men sen när jag trycker på OK, så skriver den ut tecknet jag inte vill ha med.
Jag förstår inte varför. vad gör jag för fel?Sv: bara siffror och komma + msg box
if ... then
msgbox "hejsan"
keyascii = ""
end ifSv: bara siffror och komma + msg box
Detta ämne har varit upp en massa gånger.
Varje gång blir det en massa tjaffs om vilket som är bäst.
Så här skall ditt problem i princip lösas.
3 tillåt kopiera, 8 tillåt BackSpace,9 tillåt Tab
13 tillåt Enter , 22 tillåt klistra in, 44 tillåt kommatecken
45 tillåt minustecken ,46 punkt 48 To 57 0 - 9
Private Sub Text1_KeyPress(KeyAscii As Integer)
Select Case KeyAscii
Case 3, 8, 9, 13, 22, 44, 45, 46, 48 To 57
'om användaren skriver punkt ändra till komma
If KeyAscii = 46 Then KeyAscii = 44
Case Else
KeyAscii = 0
MsgBox ("Endast siffror tillåtna")
End Select
End Sub
Private Sub Text1_LostFocus()
Dim sngCheck As Single, tmpStr As String
Dim ret As Long
'Om användaren klistrat in tal med punkt
If InStr(Text1.Text, ".") Then
tmpStr = Text1.Text
ret = InStr(tmpStr, ".")
Mid$(tmpStr, ret) = ","
Text1.Text = tmpStr
End If
'Om användaren klistrat in bokstäver
On Error Resume Next
sngCheck = CSng(Text1.Text)
If Err = 13 Then
MsgBox ("Endast siffror tillåtna Text1.Text")
Text1.Text = ""
End If
End Sub
mvh
Sven DixiSv: bara siffror och komma + msg box