Hector SOS

24/11/2005 - 02:31 por Edison Torres | Informe spam
hector

estoy usando el ejemplo 2 que me indicastes ya que no se donde poner el
ejemplo 1

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



pero que me da error cuando en vez de digitar en el textbox1 un numero
digito una letra cualquiera y el error 13 en tiempo de ejecucion es que no
coinciden los tipos
POR FAVOR QUE HAGO

"Héctor Miguel" escribió:


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.



 

Leer las respuestas

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

... usando el ejemplo 2... ya que no se donde poner el ejemplo 1
Private Sub TextBox1_Change()
Worksheets("reportes").Range("G6") = TextBox1
End Sub


... me da error cuando en vez de digitar en el textbox1 un numero digito una letra cualquiera
y el error 13 en tiempo de ejecucion es que no coinciden los tipos [...]



con los codigos que hemos estado 'probando' [y que segun comentas YA han funcionado]
... no he logrado 'reproducir' el error que comentas :-(
-> estas seguro que no hay otros codigos 'regados por ahi' [quizas en otros eventos] ???

comentas [si hubiera] algun 'detalle' adicional ?
saludos,
hector.

Preguntas similares