Como guardar un numero decimal desde un textbox en un formulario de Excel?

Tengo un proyecto sobre una planilla de notas para docentes, donde registro los nombres de los estudiantes y asigno las calificaciones desde un formulario de Excel. Tengo el código para que en el formulario los textbox solo acepten números de 1 a 5 con decimales. Hasta allí voy bien, pero, sucede que al momento de capturar o guardar las notas en la hoja de Excel, lo pasa como numero entero. Ejemplo: en el textbox escribo como nota el 3.5, al guardarlo en la hoja me aparece es 35 lo cual crea un problema con el promedio de las notas; entonces que debo cambiar para que lo guarde como numero decimal, es decir con la coma.

Tengo el siguiente modulo:

En el Textbox106 tengo el siguiente código:

Private Sub TextBox106_Change()

    Me.TextBox106.Value = SoloNumeroDecimal(Me.TextBox106.Value)

End Sub

En el botón guardar tengo el siguiente código:

Private Sub CommandButton118_Click()

' Guardar datos del combobox

    Dim Fila As Integer

    Dim Final As Integer

       On Local Error Resume Next

        For Fila = 5 To 1000

        If Hoja6.Cells(Fila, 1) = "" Then

            Final = Fila - 1

            Exit For

        End If

    Next

    For Fila = 2 To Final

        If Me.ComboBox5 = Hoja6.Cells(Fila, 1) Then

            Application.Visible = True

            Sheets("OCTAVOA").Select

            ' GUARDAR LAS NOTAS

            Hoja6.Cells(Fila, 2) = Me.TextBox104     ' NOMBRES

            Hoja6.Cells(Fila, 3) = Me.TextBox105      ' APELLIDOS

Hoja6.Cells(Fila, 4) = CDbl(Me. TextBox106) ' PRIMERA NOTA

Hoja6.Cells(Fila, 5) = CDbl(Me. TextBox107) ' EGUNDA NOTA

Hoja6.Cells(Fila, 6) = CDbl(Me. TextBox108) ' TERCERA NOTA 1 PERIODO

Hoja6.Cells(Fila, 7) = CDbl(Me. TextBox109) ' CUARTA NOTA

Hoja6.Cells(Fila, 8) = CDbl(Me. TextBox110) ' QUINTA NOTA

   Me.ComboBox5 = ""

    Me.TextBox104 = ""

    Me.TextBox105 = ""

    Me.TextBox106 = ""

    Me.TextBox107 = ""

    Me.TextBox108 = ""

    Me.TextBox109 = ""

    Me.TextBox110 = ""

ActiveWorkbook.Save

End Sub

1 respuesta

Respuesta
1

Eso es porque utilizas la coma (, ) como separador decimal, entonces podrías intentar algo como esto:

Hoja6.Cells(Fila, 4) = CDbl(Replace(Me. TextBox106, ".", ",")) ' PRIMERA NOTA

BUENOS DÍAS...

Hice el cambio que me sugiere pero me sale ahora un error

Agradezco su ayuda pero necesito más colaboración sobre ese tema. Gracias

No pusiste completo el código que yo puse, revísalo nuevamente.

¡Gracias! Apreciado compañero. Dios os bendiga...

Me equivoque al copiar el código incompleto, por eso me daba el error.

Probé y me funciona perfectamente bien.

Pero ya no me funciona la condición que tenia, era: que los textbox solo admitían notas del 1 al 5;

Será posible complementar esa condición. Yo tenia este codigo: 

Private Sub TextBox106_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)

If KeyAscii < 49 Or KeyAscii > 53 Then
KeyAscii = 0
MsgBox ("DEBE INGRESAR SOLO UN NUMERO DEL 1 AL 5")
End If

End Sub

Debes homologar lo que vas a utilizar como separador decimal ( . ) o (, )

De lo contrario vas a tener que controlarlo en todo tu código.

Por lo pronto donde tengas problemas, revisa si tienes (, ) entonces lo sustituyes por ( . )

Pero te recomiendo que utilices el separador decimal de tu región.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas