Programación General > Visual Basic para principiantes
Admitir solo numeros y un solo punto para operaciones
F_Tanori:
:blink: :whistling:
Creo que hemos entendido tu explicacion desde el principio... :rolleyes:
es cuestion de razonar un poco....
banderousky:
estube estudiando un libro de visual basic y llegue
a la siguiente conclusion de como resolver este problema
espero y les sirva a alguien mas, yo lo necesitaba para no ingresar
mas de un punto decimal en las cajas de texto que necesito para hacer
operaciones matematicas, despues me encontre con el problema de cuando
ponia pegar en la caja de texto y podia poner un letas y me cometia errores
por lo que tube qe restringir la itulizacion de pegar o crtl + V
bueno saludos a todos
en el evento keypress de la caja de texto
'Bloqueamos la utilización de pegar o Crtl+V para evitar que se ingresen letras'
'cuando es obligatorio ingresar solamente numeros'
Clipboard.Clear
Clipboard.SetText ""
'Solo admitimos numeros en la caja de texto y el punto decimal'
If InStr("0123456789." & Chr(8) & Chr(13), Chr(KeyAscii)) = 0 Then
KeyAscii = 0
End If
Dim sCar As String * 1
sCar = Chr(KeyAscii)
If sCar = "." Then
' comprueba si se ha pulsado el punto'
KeyAscii = IIf(sDecimal = ",", 44, 46)
sCar = Chr(KeyAscii)
' si ya se ha puesto un punto decimal, no admite otro
If (InStr(txtC2H2, sCar) > 0) Then
KeyAscii = 0
Exit Sub
End If
Exit Sub
End If
If KeyAscii = 13 Then 'Verifica que se pulsa la tecla ENTER'
SendKeys "{tab}" 'Se pulsa la tecla TAB'
End If
y en el evendo mousedown
'Bloqueamos la utilización de pegar o Crtl+V para evitar que se ingresen letras'
'cuando es obligatorio ingresar solamente numeros'
Clipboard.Clear
Clipboard.SetText ""
y en el vento load del formulario (yo lo tengo en el evento activate)
'comprueba el formato numérico del sistema
sDecimal = Format(0.1, "#.#")
sDecimal = IIf(InStr(sDecimal, ","), ",", ".")
m0skit0:
Efectivamente, funciona. Pero restringir opciones al usuario porque no conoces el lenguaje es una pésima práctica y muy poco profesional.
Nebire:
Usa el evento validate del textbox. Esto ocurre cuando el textbox pierde el foco, ahí chequeas si tiene más de un punto o letras y por tanto cancelas.... al cancelar, el foco no sale del textbox.
--- Código: Visual Basic --- Private Sub Text1_Validate(Cancel As Boolean) Dim n() As Byte Dim HayPunto As Boolean If Text1.Text = "" Then MsgBox "La caja de texto no puede quedar vacía, escriba al menos un 0." Cancel = True Else n = Text1.Text For k = 0 To UBound(n) Step 2 If n(k) > 47 Then If n(k) > 58 Then MsgBox "No se permiten caracteres, sólo números." Cancel = True Exit Sub End If Else If n(k) = 46 Then If HayPunto = False Then HayPunto = True Else MsgBox "Sólo se permite un punto para el número, como separador decimal." Cancel = True Exit Sub End If Else MsgBox "No se permiten caracteres, sólo números." Cancel = True Exit Sub End If End If Next End IfEnd Sub
Navegación
[*] Página Anterior
Ir a la versión completa