Hector Ayudame

25/11/2005 - 22:50 por Ruben | Informe spam
Hector disculpame puedes decirme en onde esta el error ya que al codigo
que tu me envias le cambie para algo para que me capture por medio del
KeyPress tal como tu me indicastes pero no se que esty haciendo mal
porque no me funciona

Private Sub TextBox25_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
If LCase(Chr(KeyAscii)) Like "[a-zñ]" Then KeyAscii Asc(UCase(Chr(KeyAscii))): Worksheets("Reportes").Range("f44") Worksheets("Reportes").Range("f44") & Chr(KeyAscii):
Else: KeyAscii = 0
End If
Worksheets("reportes").Range("F44").Value = TextBox25.Value
End Sub

Si te daras cuenta estoy capturando la pulsacion pero ahi esta el error
(no se donde) te recuerdo que es para que solo me acepte texto y
espacios en blanco y que no me acepte numeros ni negativos ni
positivos.

Saludos te juro que si me ayudas con esto ya no te molesto mas, mil
gracias de antemano.
 

Leer las respuestas

#1 Héctor Miguel
26/11/2005 - 00:35 | Informe spam
hola, Ruben/Edison !

... puedes decirme en onde esta el error ya que al codigo que tu me envias le cambie para algo
para que me capture por medio del KeyPress tal como tu me indicastes pero no se que esty haciendo mal [...]



por favor... 'plis'... [y lo mismo en cualquier idioma que te resulte mas 'entendible'] :DD
-> revisa 'de pe a pa'... 'de principio a fin'... todo el contenido del siguiente mensaje ;)
==[primero]: no hay molestia ni disculpas que ofrecer ni pedir por consultar en el foro ;)
a menos [obviamente] que existan agresiones :-( [para lo cual... 'basta' con abandonar 'el hilo'] :))

[segundo]: la situacion que comentas, ya la habiamos 'tratado' [en el ultimo post a tu consulta: 'problemas con un textbox']

[en resumen]: probablemente exista una 'confusion' en cuanto a como tratar/aprovechar/utilizar/... los eventos...
[me explico]: los 'eventos' [como el '_keypress'] son una especie de 'enlace' entre 'el evento'... y el control... [y amplio]:
- un evento involucra tiempo y momento
- un procedimiento 'de evento' -precisamente- 'atrapa' al evento en una fraccion de tiempo JUSTO ANTES de que 'suceda'...
- [en el caso del keypress] permite [o impide] que el control 'reciba' la pulsacion del usuario en el teclado 'en el momento'
- al control [el textbox], NO se le 'deposita' la pulsacion del teclado... sino -> hasta que termina el evento '_keypress'
- es por eso que puedes 'impedir' la entrada al textbox de caracteres 'no permitidos'

si queda clara mi exposicion anterior :D [probablemente] ya podras entender el 'por que' de los caracteres 'faltantes' :))

[la re/propuesta]: en el modulo de codigo del formulario, y en los eventos 'apropiados'...

1) para que un textbox solo 'pueda recibir' caracteres numericos [0 a 9]...
Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
If Not Chr(KeyAscii) Like "[0-9]" Then KeyAscii = 0
End Sub

2) para que 'la celda' pueda 'recibir' el contenido COMPLETO de lo que haya en el textbox...
=> NO utilices el evento '_keypress' [ya sabes que el textbox NO ha quedado 'completo'] utiliza...
Private Sub TextBox1_Change()
Worksheets("Reportes").Range("g6") = TextBox1
End Sub

3) si realmente necesitas que pase el contenido del textbox a la celda en el evento '_keypress'...
=> 'tendrias que'... 'acumular'... las pulsaciones 'validas' a lo que YA contenga 'el rango' [p.e.]
Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
If Not Chr(KeyAscii) Like "[0-9]" Then KeyAscii = 0
Worksheets("Reportes").Range("g6") = Worksheets("Reportes").Range("g6") & Chr(KeyAscii)
End Sub

-> y no estoy seguro que 'este tipo de acumulacion' sea lo que estas 'buscando' :-(

ahora si... disculpa lo extenso :)) y...
si cualquier duda [o informacion adicional]... comentas ?
saludos,
hector.

Preguntas similares