¿porque no funciona?

06/10/2006 - 20:19 por vm_tapia | Informe spam
¡¡¡ Saludos a toda la comunidad !!!

Espero me puedan ayudar con lo siguiente:

En un TextBox al momento de capturar una cantidad y se requiere que sea
negativa, obviamente se tiene que teclear el signo de "-" (menos) al
principio, pero si el usuario lo teclea a la mitad o al final de la cantidad,
necesito que el signo de menos se posicione al principio, con el codigo
siguiente, en teoria debe de hacerlo, pero al ejecutarlo, se queda pasmado al
momento de enviar el caracter de menos y no encuentro la manera de
solucionarlo.

¿alguna sugerencia?

=Private Sub PU1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
If Not Chr(KeyAscii) Like "[0-9,.,-]" Then KeyAscii = 0
If Chr(KeyAscii) Like "[-]" Then
Application.SendKeys ("{bs}{home}")
Application.SendKeys ("-") <-- aqui esta el problema
Application.SendKeys ("{end}")
End If
End Sub
=
Gracias.
Victor Manuel.

Preguntas similare

Leer las respuestas

#1 Insumos
06/10/2006 - 20:37 | Informe spam
Hola Victor Manuel:

Se me ocurre que podrías agregar un ToggleButton que indique que el número
es positivo si esta desactivado o que indique que es negativo si esta
activado. De esta manera los usuarios en el TextBox se limitarian a ingresar
solo números y en caso de querer ingresar un número negativo simplemente
deben activar el ToggleButton, con lo cual cuando este último esta activado
fácilmente el código puede reconocer que hay un número negativo y podes
hacer que se agregue al valor del TextBox un "-" adelante con un simple
código antes de hacer con los datos del TextBox lo que tenga que hacer.
Espero te sirva la idea.
Saludos


"vm_tapia" escribió en el mensaje
news:
¡¡¡ Saludos a toda la comunidad !!!

Espero me puedan ayudar con lo siguiente:

En un TextBox al momento de capturar una cantidad y se requiere que sea
negativa, obviamente se tiene que teclear el signo de "-" (menos) al
principio, pero si el usuario lo teclea a la mitad o al final de la


cantidad,
necesito que el signo de menos se posicione al principio, con el codigo
siguiente, en teoria debe de hacerlo, pero al ejecutarlo, se queda pasmado


al
momento de enviar el caracter de menos y no encuentro la manera de
solucionarlo.

¿alguna sugerencia?

=> Private Sub PU1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
If Not Chr(KeyAscii) Like "[0-9,.,-]" Then KeyAscii = 0
If Chr(KeyAscii) Like "[-]" Then
Application.SendKeys ("{bs}{home}")
Application.SendKeys ("-") <-- aqui esta el problema
Application.SendKeys ("{end}")
End If
End Sub
=>
Gracias.
Victor Manuel.
Respuesta Responder a este mensaje
#2 Héctor Miguel
07/10/2006 - 02:25 | Informe spam
hola, Victor !

En un TextBox al momento de capturar una cantidad y se requiere que sea negativa
obviamente se tiene que teclear el signo de "-" (menos) al principio
pero si el usuario lo teclea a la mitad o al final de la cantidad
necesito que el signo de menos se posicione al principio, con el codigo siguiente, en teoria debe de hacerlo
pero al ejecutarlo, se queda pasmado al momento de enviar el caracter de menos y no encuentro la manera de solucionarlo.



haz una prueba con el siguiente codigo [ojo: necesitaras adaptar alguna prevencion/correccion/... de un -posible- doble-menos] -?-

Private Sub PU1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
Select Case KeyAscii
Case 44, 46, 48 To 57
Case 45
PU1 = "-" & PU1
SendKeys "{bs}"
Case Else
KeyAscii = 0
End Select
End Sub

saludos,
hector.

__ el codigo expuesto __
Private Sub PU1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
If Not Chr(KeyAscii) Like "[0-9,.,-]" Then KeyAscii = 0
If Chr(KeyAscii) Like "[-]" Then
Application.SendKeys ("{bs}{home}")
Application.SendKeys ("-") <-- aqui esta el problema
Application.SendKeys ("{end}")
End If
End Sub
Respuesta Responder a este mensaje
#3 vm_tapia
10/10/2006 - 00:38 | Informe spam
Hector Miguel:

Gracias por el codigo, funciona muy bien, pero no como yo quiero (que
exigente sali), mira, asi como lo pones esta bien, pero yo necesito que el
cambio de posicion del guion sea al momento de la captura del mismo y no al
final (al dar enter).

sobre tu comentario:

[ojo: necesitaras adaptar alguna prevencion/correccion/... de un posible doble menos] -?-



¿Y COMO LO HAGO? tengo una idea (no muy clara) de como hacerlo, pero como te
daras cuenta, me la complico yo solo y creo que tu lo harias mejor.

Ademas de lo anterior, de ser posible, como sera el codigo si lo que deseo
es que al momento de capturar un importe y en cualquier momento, tecleo el
guion, lo ponga al principio (para indicar un importe negativo) y si lo
vuelvo a teclear, lo quite (para indicar un importe positivo). Obviamente
respetando y sin cambiar el importe capturado, algo asi como la tecla +/- de
las calculadoras.

espero no abusar mucho de tu ayuda.

Gracias.

Victor Manuel
Respuesta Responder a este mensaje
#4 Héctor Miguel
10/10/2006 - 07:03 | Informe spam
hola, Victor !

... funciona muy bien, pero no como yo quiero (que exigente sali)
... necesito que el cambio de posicion del guion sea al momento de la captura del mismo y no al final (al dar enter).
sobre tu comentario:
[ojo: necesitaras adaptar alguna prevencion/correccion/... de un posible doble menos] -?-


... COMO LO HAGO? tengo una idea (no muy clara) de como hacerlo, pero... me la complico ...
... de ser posible, como sera el codigo si lo que deseo es que al momento de capturar un importe y en cualquier momento
tecleo el guion, lo ponga al principio (para indicar un importe negativo) y si lo vuelvo a teclear, lo quite (para indicar un importe positivo).
... respetando y sin cambiar el importe capturado, algo asi como la tecla +/- de las calculadoras...



prueba con las siguientes adaptaciones...

Private Sub PU1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
Select Case KeyAscii
Case 44, 46, 48 To 57
Case 45
SendKeys "{bs}"
PU1 = PU1 * -1
Case Else
KeyAscii = 0
End Select
End Sub

si cualquier duda [o informacion adicional]... comentas ?
saludos,
hector.
Respuesta Responder a este mensaje
#5 vm_tapia
10/10/2006 - 22:36 | Informe spam
Hector Miguel:

Muchas Gracias, sabia que podia contar contigo.

le hice una modificacion al codigo que me proporcionaste y quedo asi:

Private Sub PU1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
If Not Chr(KeyAscii) Like "[0-9,.,-]" Then KeyAscii = 0
If Chr(KeyAscii) Like "[-]" Then
SendKeys "{BS 1}"
AltaFacturas.PU1.Value = AltaFacturas.PU1.Value * -1
End If
End Sub

lo hice asi porque con el Select Case, el cambio de posicion del guion lo
hace como si fuera un AfterUpdate (despues de dar enter) y con la
modificacion hecha lo hace justo al momento de teclear el guion, que es lo
que necesitaba.

Gracias, MUCHAS GRACIAS.

Victor Manuel.
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida