Holas
Como hago que un textbox acepte solo numeros, mm que no se puedan digitar otras cosas en este, de ante mano gracias
chaoss
Creo q en la propiedad DataFormat, o Format algo de eso ahi puedes elegir el formato q quieras q acepte el txt creo.. no quiero equivocarme..pero creo q es asi.
Saludos!
Es en la propiedad dataFormat, le das a los puntos suspensivos de la derecha y eliges si kieres numeros, con decimales...
Eso es solo si usas base de datos. Para que solo acepte numeros tenes que poner lo siguiente en el evento Key_Press
If KeyAscii < 48 Or KeyAscii > 57 Then
KeyAscii = 0
End If
Otra forma podría ser esta:
Private Sub Text1_Change()
Text1.Text = Val(Text1.Text)
End Sub
La he probado yo y funciona perfectamente, pero si alguien pone 2 carcácteres no numéricos se pone el valor 0 xD
hola
Aceptar números
sub text1_keypress(keyascii as integer)
if not isnumeric(chr(keyascii)) then
if keyascii<>8 then
keyascii=0
endif
endif
end sub
Convertir números, y la coma
sub text1_keypress(keyascii as integer)
if not isnumeric(chr(keyascii)) then
if keyascii=asc(".") then
keyascii=asc(",")
endif
if keyascii<>asc(",") then
if keyascii<>8 then
exit sub
endif
endif
end sub
Aceptar solo letras y convertirlas a mayúsculas
sub text1_keypress(keyascii as integer)
keyascii=asc(ucase(chr(keyascii)))
if keyascii<asc("A") or keyascii>asc("Z") then
if keyascii<>asc("Ñ") then
if keyascii<>8 then
keyascii=0
endif
endif
endif
end sub
Un saludo
puedes hacer esto
if not isnumeric(txt1.text) then
txt1.text=""
else
endif
Hola
Citarif not isnumeric(txt1.text) then
txt1.text=""
else
endif
así sabes si es numérico o no el textbox entero, mientras que de la forma que yo puse se comprueba caracter a caracter.
Ambas cosas están bien, depende de como lo quieras conseguir.
Un saludo
Cita de: soplo en 8 Octubre 2006, 10:05 AM
Hola
Citarif not isnumeric(txt1.text) then
txt1.text=""
else
endif
así sabes si es numérico o no el textbox entero, mientras que de la forma que yo puse se comprueba caracter a caracter.
Ambas cosas están bien, depende de como lo quieras conseguir.
Un saludo
el problema que tienen tus métodos es que creo que si copipasteas cualquier dato el keypress no te envia su valor verdadero...
Claro, el keypress sirve para detectar pulsaciones por teclado.
Si quieres controlar el copy paste deberías controlar también las rutinas de conversaciones DDE que permiten también manejar el portapapeles
Un saludo
La que yo siempre utilizo es esta funcion
Private Function Valor10(Tecla As Integer) As Integer
Dim StrValido As String
StrValido = "1234567890."
If Tecla > 26 Then
If InStr(StrValido, Chr(Tecla)) = 0 Then
Tecla = 0
End If
End If
Valor10 = Tecla
End Function
Y en el evento keypress del text la llamo
Private Sub txtCantidad_KeyPress(KeyAscii As Integer)
Call Valor10(KeyAscii)
End Sub
siempre me ha funcionado bien
Saludos...
SetWindowLong(tutextbox.hWnd, GWL_STYLE, ES_NUMBER)
Aqui dejo un Snippet usando el Api GetWindowLong y SetWindowLong:
Option Explicit
Private Declare Function SetWindowLong Lib "user32.dll" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Private Declare Function GetWindowLong Lib "user32.dll" Alias "GetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long) As Long
Private Sub Form_Load()
Call OnlyNumbers(Text1.hwnd)
End Sub
Public Function OnlyNumbers(ByVal lHwnd As Long) As Boolean
Dim New_Style As Long
Dim Act_Style As Long
Act_Style = GetWindowLong(lHwnd, (-16)) 'Const GWL_STYLE As Long = -16
If Not (Act_Style And &H2000&) Then 'Const ES_NUMBER As Long = &H2000&
New_Style = (Act_Style Or &H2000&) 'Const ES_NUMBER As Long = &H2000&
OnlyNumbers = SetWindowLong(lHwnd, (-16), New_Style) 'Const GWL_STYLE As Long = -16
End If
End Function
Saludos ;)
Cita de: Karcrack en 29 Noviembre 2008, 13:30 PM
Aqui dejo un Snippet usando el Api GetWindowLong y SetWindowLong:
Option Explicit
Private Declare Function SetWindowLong Lib "user32.dll" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Private Declare Function GetWindowLong Lib "user32.dll" Alias "GetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long) As Long
Private Sub Form_Load()
Call OnlyNumbers(Text1.hwnd)
End Sub
Public Function OnlyNumbers(ByVal lHwnd As Long) As Boolean
Dim New_Style As Long
Dim Act_Style As Long
Act_Style = GetWindowLong(lHwnd, (-16)) 'Const GWL_STYLE As Long = -16
If Not (Act_Style And &H2000&) Then 'Const ES_NUMBER As Long = &H2000&
New_Style = (Act_Style Or &H2000&) 'Const ES_NUMBER As Long = &H2000&
OnlyNumbers = SetWindowLong(lHwnd, (-16), New_Style) 'Const GWL_STYLE As Long = -16
End If
End Function
Saludos ;)
Disculpa, yo que soy nuevecito en esto...que es un snippet? :-[ :-[ , aunque entiendo que el codigo es para que acepte solo numeros...supongo que sera algun tipo de programa, pero podrias decirme que significa? Simple curiosidad de novato XD
Frikimaster
Snippet (programming)
From Wikipedia, the free encyclopedia
Snippet is a programming term for a small region of re-usable source code or text
Console.Writeline ("Gracias");
Frikimaster
porque no se usa el operador asi:
If IsNumeric(Text1.text) = False then
msgbox("Hay letras")
else
msgbox("No hay letras")
end if