Alguien me Ayude

24/11/2005 - 23:26 por Edison Torres | Informe spam
estoy usando el sgte. codigo en un textbox pero no deseo que me acepte texto
que estoy haciendo mal, si me ayudan corrigiendome se los agradeceria

Private Sub TextBox26_Exit(ByVal Cancel As MSForms.ReturnBoolean)
If TextBox26 < 1 Then _
MsgBox "El numero debe ser mayor que CERO !!!": Cancel = True: Exit Sub
If Len(TextBox26) < TextBox26.MaxLength Then _
Cancel = MsgBox( _
"No se han completado los " & TextBox26.MaxLength & _
" caracteres necesarios..." & vbCr & _
"Confirmas que se puede cotinuar ???", _
vbOKCancel + vbInformation + vbDefaultButton2, "Aviso !!!") = vbCancel
End Sub

Preguntas similare

Leer las respuestas

#1 Héctor Miguel
25/11/2005 - 00:43 | Informe spam
hola, Edison !

estoy usando el sgte. codigo en un textbox pero no deseo que me acepte texto
que estoy haciendo mal, si me ayudan corrigiendome se los agradeceria
Private Sub TextBox26_Exit(ByVal Cancel As MSForms.ReturnBoolean)
If TextBox26 < 1 Then _
MsgBox "El numero debe ser mayor que CERO !!!": Cancel = True: Exit Sub
If Len(TextBox26) < TextBox26.MaxLength Then _
Cancel = MsgBox( _
"No se han completado los " & TextBox26.MaxLength & _
" caracteres necesarios..." & vbCr & _
"Confirmas que se puede cotinuar ???", _
vbOKCancel + vbInformation + vbDefaultButton2, "Aviso !!!") = vbCancel
End Sub



Private Sub TextBox26_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
If Not Chr(KeyAscii) Like "[0-9]" Then KeyAscii = 0
End Sub

saludos,
hector.

p.d. parece que con la prisa que traes...
no quisieras darte [suficiente] tiempo para analizar las [extensas] explicaciones de los mensajes anteriores :))
Respuesta Responder a este mensaje
#2 Edison Torres
25/11/2005 - 15:20 | Informe spam
hola, Hector
Disculpa tanto que moleste pero ese codigo ya me lo has dado y en cierta
forma si me funciona pero el evento KeyPress lo que hace es tomar la primera
tecla que digites lo cual si yo estoy digitando 0915051353 al momento de
pasar ese dato a la hoja de excel en cualquier celda me aparece como 091505135
Si podrias decirme un codigo que me ayude y por favor indicame en donde lo
pongo.

Gracias por todo Hector y disculpa.

"Héctor Miguel" escribió:

hola, Edison !

> estoy usando el sgte. codigo en un textbox pero no deseo que me acepte texto
> que estoy haciendo mal, si me ayudan corrigiendome se los agradeceria
> Private Sub TextBox26_Exit(ByVal Cancel As MSForms.ReturnBoolean)
> If TextBox26 < 1 Then _
> MsgBox "El numero debe ser mayor que CERO !!!": Cancel = True: Exit Sub
> If Len(TextBox26) < TextBox26.MaxLength Then _
> Cancel = MsgBox( _
> "No se han completado los " & TextBox26.MaxLength & _
> " caracteres necesarios..." & vbCr & _
> "Confirmas que se puede cotinuar ???", _
> vbOKCancel + vbInformation + vbDefaultButton2, "Aviso !!!") = vbCancel
> End Sub

Private Sub TextBox26_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
If Not Chr(KeyAscii) Like "[0-9]" Then KeyAscii = 0
End Sub

saludos,
hector.

p.d. parece que con la prisa que traes...
no quisieras darte [suficiente] tiempo para analizar las [extensas] explicaciones de los mensajes anteriores :))



Respuesta Responder a este mensaje
#3 Héctor Miguel
25/11/2005 - 20:24 | Informe spam
hola, Edison !

Disculpa tanto que moleste pero ese codigo ya me lo has dado y en cierta forma si me funciona
pero el evento KeyPress lo que hace es tomar la primera tecla que digites lo cual
si yo estoy digitando 0915051353 al momento de pasar ese dato a la hoja... me aparece como 091505135
Si podrias decirme un codigo que me ayude y por favor indicame en donde lo pongo [...]



[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.
Respuesta Responder a este mensaje
#4 Edison Torres
25/11/2005 - 21:25 | Informe spam
Hector, otravez yo de nuevo molestando y si ese mismo ejemplo lo quiero
aplicar para que me permita ingresar solo texto y asi sea que me ingresen en
minusculas automaticamente me cambie a mayuscula como lo hago



"Héctor Miguel" escribió:

hola, Edison !

> Disculpa tanto que moleste pero ese codigo ya me lo has dado y en cierta forma si me funciona
> pero el evento KeyPress lo que hace es tomar la primera tecla que digites lo cual
> si yo estoy digitando 0915051353 al momento de pasar ese dato a la hoja... me aparece como 091505135
> Si podrias decirme un codigo que me ayude y por favor indicame en donde lo pongo [...]

[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.



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