Så här ser koden ut och det som händer är att allting funkar utom att efter msg box kommer upp och jag trycker OK så skrivs tecknet ut som jag inte vill ha. Alltså den verkar hoppa över koden - KeyAscii = 0 i den nedersta subrutinen. Det är inte så snyggt att modifiera parametrar. Kan vara det som strular. Du kan istället använda konstanten för att avgöra vilken tagent som tryckts.formuläret ska bara acceptera siffror och ej
Det som är märkligt är att om jag skriver den nedersta koden under respektive övre rutinerna (alltså två gånger) så funkar allt!
Kan någon hjälpa mig?
Private Sub Text1_KeyPress(KeyAscii As Integer)
siffror (KeyAscii)
End Sub
Private Sub Text2_KeyPress(KeyAscii As Integer)
siffror (KeyAscii)
Command1.Enabled = True
End Sub
Public Sub siffror(KeyAscii As Integer)
Select Case KeyAscii
Case Asc(","), Asc(Chr$(8))
Case Is < Asc("0"), Is > Asc("9")
KeyAscii = 0
MsgBox "BARA SIFFROR OCH KOMMA, TACK!", , "OBS!"
End Select
End SubSv: formuläret ska bara acceptera siffror och
Private Sub Text1_KeyPress(KeyAscii As Integer)
KeyAscii = siffror(KeyAscii)
End Sub
Private Sub Text2_KeyPress(KeyAscii As Integer)
KeyAscii = siffror(KeyAscii)
Command1.Enabled = True
End Sub
Public Function siffror(KeyAscii As Integer) As Integer
Select Case KeyAscii
Case vbKey0 To vbKey9, vbKeyDelete, vbKeyBack, vbKeyDecimal
siffror = KeyAscii
Case Else
siffror = 0
MsgBox "Bara siffror och komma!", vbInformation, "OBS!"
End Select
End Function
Tänk på att man fortfarande kan klistra icke numerisk text.
Om du istället använder en annan strategi, vilket är lite enklare. Ger användar möjlighet att skriva vad han vill i textrutan. Men värdet valideras innan textrutan förlorar focus. Slipper användaren få upp en iriterande msgbox...
Private Sub Text3_Validate(Cancel As Boolean)
If IsNumeric(Text3) Then
'Ok
Else
MsgBox "Var vänlig att ange ett numeriskt värde!", vbInformation
Cancel = True
End If
End Sub