Problemas con un TextBox

23/11/2005 - 17:32 por Edison Torres | Informe spam
Tengo un textBox en la cual solo deseo que me ingresen palabras (incluida la
ñ mayuscula y minuscula) y no numero ni espacio en blanco, estoy utilizando
el sgte. codigo pero no me funciona ya que no me permite ingresar palabras,
el codigo que toy usando es:

Private Sub TextBox9_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
If ((KeyAscii < 65 Or KeyAscii > 123) Or (KeyAscii < 113 Or KeyAscii > 106))
Then KeyAscii = 0: MsgBox "El campo sólo debe ser Alfabético"
End Sub

Ademas como hago para que el texto se cambie a mayuscula automaticamente
cuando se escribe en minuscula.

Preguntas similare

Leer las respuestas

#1 Héctor Miguel
23/11/2005 - 20:04 | Informe spam
hola, Edison !

... un textBox... solo... ingresen palabras (incluida la ñ mayuscula y minuscula) y no numero ni espacio en blanco
... el sgte. codigo... no me funciona ya que no me permite ingresar palabras
Private Sub TextBox9_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
If ((KeyAscii < 65 Or KeyAscii > 123) Or (KeyAscii < 113 Or KeyAscii > 106))
Then KeyAscii = 0: MsgBox "El campo solo debe ser Alfabetico"
End Sub
Ademas como hago para que el texto se cambie a mayuscula automaticamente cuando se escribe en minuscula.



1) yo... dejaria de usar un msgbox y 'ganaria tiempo' [en proceso y respuesta] usando la propiedad 'ControlTipText'
con una 'especie' de aviso que diga [p.e.]: "Introduce solamente letras" ;)
[solo es 'visible' cuando el mouse 'anda por encima' del control] :))

2) puedes 'verificar' una serie de 'caracteres validos' y 'forzar/convertir' la entrada a mayusculas/minusculas con algo +/- como...
en el modulo de codigo del formulario ==Private Sub TextBox9_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
If LCase(Chr(KeyAscii)) Like "[a-zñ]" _
Then KeyAscii = Asc(UCase(Chr(KeyAscii))) _
Else KeyAscii = 0
End Sub

saludos,
hector.
Respuesta Responder a este mensaje
#2 Edison Torres
23/11/2005 - 22:40 | Informe spam
Hola Hector

Te comento que si me funciona pero tengo un pequeño problema cuando deseo
escribir los siguiente MARCELA IGLESIAS SARITAMA VILLEGAS con el codigo que
tu me diste me sale todo unido

saludos


"Héctor Miguel" escribió:

hola, Edison !

> ... un textBox... solo... ingresen palabras (incluida la ñ mayuscula y minuscula) y no numero ni espacio en blanco
> ... el sgte. codigo... no me funciona ya que no me permite ingresar palabras
> Private Sub TextBox9_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
> If ((KeyAscii < 65 Or KeyAscii > 123) Or (KeyAscii < 113 Or KeyAscii > 106))
> Then KeyAscii = 0: MsgBox "El campo solo debe ser Alfabetico"
> End Sub
> Ademas como hago para que el texto se cambie a mayuscula automaticamente cuando se escribe en minuscula.

1) yo... dejaria de usar un msgbox y 'ganaria tiempo' [en proceso y respuesta] usando la propiedad 'ControlTipText'
con una 'especie' de aviso que diga [p.e.]: "Introduce solamente letras" ;)
[solo es 'visible' cuando el mouse 'anda por encima' del control] :))

2) puedes 'verificar' una serie de 'caracteres validos' y 'forzar/convertir' la entrada a mayusculas/minusculas con algo +/- como...
en el modulo de codigo del formulario ==> Private Sub TextBox9_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
If LCase(Chr(KeyAscii)) Like "[a-zñ]" _
Then KeyAscii = Asc(UCase(Chr(KeyAscii))) _
Else KeyAscii = 0
End Sub

saludos,
hector.



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

... si me funciona pero... cuando deseo escribir... MARCELA IGLESIAS SARITAMA VILLEGAS
... me sale todo unido [...]



no supe a cual de tus comentarios hacer 'mas caso' :))
-> si a: '... y no numero ni espacio en blanco ...'
o a: '... no me funciona ya que no me permite ingresar palabras... '

solo agrega un caracter de espacio dentro de la cadena de caracteres 'validos' [la funcion Like] p.e.
de -> Like "[a-zñ]"
a -> Like "[a-zñ ]"

saludos,
hector.
Respuesta Responder a este mensaje
#4 Edison Torres
24/11/2005 - 00:23 | Informe spam
Muchas gracias Hector ayudame con 2 problemas mas que tengo y son
problema 1 Si deseo que el campo sea ALFANUMERICO como lo hago.

Problemas 2 tengo un textbox en donde unicamente el campo es numerico con el
sgte. codigo
Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
If TextBox1 = "" Then MsgBox ("vuelva a repetir")
If KeyAscii < 48 Or KeyAscii > 57 Then KeyAscii = 0
Worksheets("reportes").Range("G6").Value = TextBox1.Value
End Sub
Aparentemente funciona pero como te daras cuenta el valor que ingreso lo
guardo en la celda G6 de una hoja de Excel llamada Reportes pero cuando en el
formulario ingresas 1894 en la hoja se guarda 189 es como si cuando ingreso
el primer digito me lo toma como espacio. ayudame por favor, gracias

"Héctor Miguel" escribió:

hola, Edison !

> ... si me funciona pero... cuando deseo escribir... MARCELA IGLESIAS SARITAMA VILLEGAS
> ... me sale todo unido [...]

no supe a cual de tus comentarios hacer 'mas caso' :))
-> si a: '... y no numero ni espacio en blanco ...'
o a: '... no me funciona ya que no me permite ingresar palabras... '

solo agrega un caracter de espacio dentro de la cadena de caracteres 'validos' [la funcion Like] p.e.
de -> Like "[a-zñ]"
a -> Like "[a-zñ ]"

saludos,
hector.



Respuesta Responder a este mensaje
#5 Héctor Miguel
24/11/2005 - 00:59 | Informe spam
hola, Edison !

... Si deseo que el campo sea ALFANUMERICO como lo hago.



-> solo modifica la cadena de 'caracteres validos' [la funcion Like] p.e.
si solo deseas 0 a 9, de A a Z, Ñ o espacio... -> Like "[0-9a-zñ ]"
si necesitas incluir el signo menos, agregalo AL INICIO -> Like "[-0-9a-zñ ]"
si necesitas incluir el punto [o cualquier otro caracter], agregalo AL FINAL -> Like "[0-9a-zñ .]"

... un textbox en donde unicamente el campo es numerico con el sgte. codigo
Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
If TextBox1 = "" Then MsgBox ("vuelva a repetir")
If KeyAscii < 48 Or KeyAscii > 57 Then KeyAscii = 0
Worksheets("reportes").Range("G6").Value = TextBox1.Value
End Sub
Aparentemente funciona pero... en la celda G6... cuando en el formulario ingresas 1894 en la hoja se guarda 189
es como si cuando ingreso el primer digito me lo toma como espacio [...]



-> en este caso, el 'detalle' es que con el evento '_keypress' estas evaluando UNICAMENTE la tecla pulsada 'en el momento'
por lo que 'tendrias que'... 'acumular'... las pulsaciones 'validas' a lo que YA contenga el rango 'G6' [p.e.]
[Reportes!G6] = [Reportes!G6] & Chr(KeyAscii)
-> aunque no estoy seguro que 'este tipo de acumulacion' sea lo que estas 'buscando' :-(
-> la otra alternativa es 'mover' el pase al rango al evento '_change' del textbox [p.e.]
Private Sub TextBox1_Change()
Worksheets("reportes").Range("G6") = TextBox1
End Sub
=> nota que de esta forma, lo que se deposita en la celda ES UN TEXTO [que es el tipo de datos por omision de un textbox] :-(
si requires que el dato sea numerico... usa [p.e.] -> = CLng(TextBox1)
[o buscar otras funciones de conversion de tipo de datos CDbl(...) CSng(...) etc.

saludos,
hector.
Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida