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