Excel Valor de textbox guardado como texto y necesito guardarlo como número decimal

Tengo un formulario que guarda datos en una hoja de excel luego de ingresarlos en textbox.

Tengo un problema porque, en un textbox dígito números con decimales y en la hoja de excel los pasa como si fueran texto, pero si guardo el número sin decimales respeta el formato de la celda que es moneda.

Por favor me ayudan, indicándome que debo hacer para que siempre que ponga números sean capturado como decimales en la hoja de excel.

A continuación les reproduzco el código que utilizo.

----

Private Sub CommandButton1_Click()

Application.ScreenUpdating = False 'Ocultamos las acciones en la pantalla

'fijamos la fecha actual
Dim fechaActual As Date
Dim horaActual As Date
fechaActual = Date
horaActual = Now

Txtpeso. SetFocus 'Envia el cursor al Textbox de la fecha para volver a capturar los datos

Sheets("DATOS_BALDIO").Select 'Se selecciona la hoja y la celda donde se van a registrar los datos del formulario
Range("A2").Select 'Se selecciona la celda donde se registra el primer dato del formulario
Do While Not IsEmpty(ActiveCell) 'encuentra la ultima celda con datos
ActiveCell.Offset(1, 0).Select 'en la ultima celda con datos, muevete una fila abajo

Loop 'bucle

ActiveCell = fechaActual 'asigna la fecha actual a la celda activa
ActiveCell.Offset(0, 1).Select 'muevete en la misma fila, una columna a la derecha

ActiveCell = horaActual 'asigna la hora actual a la celda activa
ActiveCell.Offset(0, 1).Select 'muevete en la misma fila, una columna a la derecha

ActiveCell = txtpeso 'copia el contenido del textbox1 a la celda activa
ActiveCell = Val(txtpeso.Value) 'da formato a la celda de peso

ActiveCell.Offset(0, 1).Select 'muevete en la misma fila, una columna a la derecha

ActiveCell = txtnumero 'copia el contenido del textbox2 a la celda activa
ActiveCell = Val(txtnumero.Value) 'da formato a la celda de peso
ActiveCell.Offset(0, 1).Select 'muevete en la misma fila, una columna a la derecha

txtpeso = Empty 'dejar en blanco el campo
txtnumero = Empty 'dejar en blanco el campo

MsgBox "Datos de pesaje guardados" 'mostrar el mensaje "Datos de pesaje guardados"

Sheets("INICIO").Select 'selecciona la hoja de inicio

End Sub

2 Respuestas

Respuesta

Supongo que el separador de decimales será la coma, así que prueba con:

ActiveCell.value=CDbl(Replace(txtnumero.value, ".", ","))

Saludos_

Muchas gracias por tu respuesta.

he sustituido

'ActiveCell = Val(txtpeso.Value)

por
ActiveCell.Value = CDbl(Replace(txtpeso.Value, ".", ","))

pero me genera un error 13 en tiempo de ejecución. No coinciden los tipos.

¿Podrías ayudarme con esto?

¿Y qué es lo que se supone que tiene que haber en txtpeso? Si siempre tiene sólo números, Replace sustituirá el posible punto por una coma (que se supone que es el separador de decimales), y CDbl debería ser capaz de convertir el texto resultante en su valor numérico.

Saludos_

Hola de nuevo:

Te cuento. El txtpeso captura como texto un valor con decimales que se introduce en el textbox y necesito que sea convertido a un número decimal, ya que los pesos que se introducen son con decimales. La verdad es que me tiene un poco frustrado no poder almacenar ese peso como numero. ¿se te ocurre alguna solución?

Y gracias otra vez .

Es que sin saber qué es lo que se introduce en ese textbox es difícil dar una respuesta.

Si ese control sólo tiene que admitir números y el separador decimal, prueba poniendo esto en el módulo del userform (cambiando TextBox1 por el nombre que sea):

Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
    If ((KeyAscii > 47 And KeyAscii < 58) Or KeyAscii = Asc(Application.International(xlDecimalSeparator))) Then Exit Sub
    KeyAscii = 0
End Sub

Con esto debería ser posible comvertir lo que haya en ese control en su valor numérico, usando CDbl.

Saludos_

Respuesta

Cdec(textbox1)

Fíjate como se usa el código siguiente en el ejemplo

a.Cells(uf, "I") = CDec(UserForm2.ListBox1.List(x, 4))

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas