Convertir Texto a Número con Decimales

Tengo mis TextBox donde guardo información pero esta la guarda como texto y deseo convertirlos a Números con Decimales ya utilice Val pero me los convierte en Enteros es al momento de guardar el dato y al momento de modificar el dato.
Abocándome a los expertos del Foro que alguien me pueda apoyar en poder convertir la información antes descrita.

3 respuestas

Respuesta
3

La función de conversión es CDBL. Pero debes evaluar primero si el textbox no quedó vacío de este modo:

If TextBox15.value <> "" Then Hoja2.Cells(UFila, 20) =Cdbl(TextBox15.value)

Muchas gracias estimada Elsa agradezco el apoyo brindado.

Estimado Elsa ya utilice el método propuesto pero si tengo 81.25 me lo cambia y me guarda como 8125 me quita el punto o la coma dependiendo el separador decimal.

Tenés que revisar en la Configuración Regional de Windows cuales son tus separadores de centavos y de miles, ya que Excel toma los mismos. Y la función CDbl toma los de Excel.

Entrá a la Configuración de Windows. En el grupo donde aparece Región, seguí las opciones marcadas en la imagen. En Formato elegí tu país, a tu derecha encontrarás opciones avanzadas que te abrirán la ventana de los separadores. Allí deja los normales para tu zona. Que no se repitan entre esos 3 marcados.

Y también las celdas ya debieran tener el formato correspondiente a cada columna: fechas, monedas, etc.

Sdos!

Respuesta
2

¿Se refieren a la fórmula o al macro?, ¿O tienes algún ejemplo?

Estoy utilizando un formulario y lo ingreso así:

Hoja2.Cells(UFila, 20) = Val(TextBox15.Text)
Hoja2.Cells(UFila, 21) = Val(TextBox16.Text)
Hoja2.Cells(UFila, 22) = Val(TextBox17.Text)
Hoja2.Cells(UFila, 23) = Val(TextBox18.Text)
Hoja2.Cells(UFila, 24) = Val(TextBox27.Text)

Pero necesito que se vuelvan en números con decimales.

Para convertir el texto en números con decimales en lugar de enteros, puedes utilizar la función CDbl en lugar de Val. La función CDbl convierte una expresión en un número de tipo Double (número decimal). Aquí tienes un ejemplo de cómo usarlo en tu código:

Hoja2.Cells(UFila, 20) = CDbl(TextBox15.Text)
Hoja2.Cells(UFila, 21) = CDbl(TextBox16.Text)
Hoja2.Cells(UFila, 22) = CDbl(TextBox17.Text)
Hoja2.Cells(UFila, 23) = CDbl(TextBox18.Text)
Hoja2.Cells(UFila, 24) = CDbl(TextBox24.Text)

Al utilizar CDbl, los valores ingresados en los TextBox se convertirán en números con decimales antes de ser asignados a las celdas de Excel. Asegúrate de que los valores ingresados en los TextBox sean números válidos, de lo contrario, se generará un error al intentar convertirlos en números decimales.

Agradezco mucho el apoyo brindado.


Estimado ya utilice el método propuesto pero si tengo 81.25 me lo cambia y me guarda como 8125 me quita el punto o la coma dependiendo el separador decimal.

Aquí tienes un ejemplo de cómo puedes modificar tu código para lograrlo:

Dim valor As String
valor = TextBox15.Text
valor = Replace(valor, ".", "") ' Eliminar el punto separador de miles
valor = Replace(valor, ",", ".") ' Reemplazar la coma decimal por un punto decimal
Hoja2. Cells(UFila, 20) = CDbl(valor)

Debes aplicar el mismo proceso de reemplazo para cada TextBox que necesites convertir. Al eliminar el punto separador de miles y reemplazar la coma decimal por un punto decimal, aseguras que el valor se convierta correctamente en un número decimal.

Respuesta
2

Revisa los siguientes vídeo te ayudarán a mejorar tus macros.

https://m.youtube.com/watch?v=PupmVvM16-8&t=11s 

https://m.youtube.com/watch?v=HfFCtMl189U&t=198s 

Sal u dos

Dante Amor

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas