Introducció de datos en un form

Hola,
Estoy trabajando en una hoja de excel que utiliza un formulario para introducir unos datos números y tengo un problema. El formulario tiene unas TextBox donde se escribe el dato y al pulsar un botón se introducen en las respectivas celdas. La instrucció que uso es la siguiente:
.Intersect(Selection.EntireRow, Range("bjan03")).Value = tb_bjan3.Value
El problema es que una vez los datos están en las celdas y los quiero sumar no puedo. Parece que no fueran números. La única solución que he encontrado es editar de nuevo los números con F2+Enter. ¿Tienes alguna idea para solucionarlo?
Muchas gracias!

1 respuesta

Respuesta
1
La salida normal de un textbox es, precisamente, un texto.
Si lo que buscas es que vuelques valores debes convertir el contenido del textbox a números, usando la función val().
Así, tu instrucción debería lucir como esto:
.Intersect(Selection.EntireRow, Range("bjan03")).Value = val(tb_bjan3.Value)
Inténtalo y dime si resolvió tu problema.
Un abrazo!
Fernando
Hola Fernando,
He probado tu solución y me funciona bien excepto que no me guarda los números decimales. Tengo configurado mi programa para que el separador de decimales sea un ",". ¿Crees qué eso puede significar un problema?
Muchísimas gracias!
Pues tienes razón es por culpa del punto y la coma! Muchas gracias Fernando.
Acabo de notar que el sitio está nuevamente habilitado (dejó de estarlo el jueves pasado por alguna especie de actualización)
Es extraño lo que te ocurre.
En mi equipo, configurado para usar el punto decimal del teclado numérico, la instrucción sugerida en la respuesta anterior considera los decimales.
Supongo que, si la configuración de tu Windows prevé el uso de coma y presionas la tecla que está en el teclado numérico, debería también considerarla correctamente. Si embargo, si utilizas la que está en el teclado alfabético, podría generarse algún conflicto.
Podrías probar con esta variante sobre tu macro para que convierta aquel separador al que tengas definido antes de volcarlo a la hoja:
Formato = "#" & Application.International(xlDecimalSeparator) & "00"
.Intersect(Selection.EntireRow, Range("bjan03")).Value = Val(Format(tb_bjan3.Value, Formato))
Como verás, esta macro define un formato para lo ingresado en el textbox de dos decimales que considera el separador de decimales que tenga el sistema donde se ejecute, independientemente de cuál fuera este.
Espero que esto resuelva tu problema.
Un abrazo!
Fernando

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas