Programación con Decimales en text box operaciones aritméticas

Quiero que dos variables que son talla y peso hagan una operación aritmética, quiero obligar al usuario a ingresar la talla en m separados con "," y peso en Kg con decimales, adicional luego mostrar un valor en una text vox que es el calculo total que es el IMC, sin embargo me genera los siguientes problemas, no me da el resultado en decimales y posterior no me da una clasificación según el valor arrojado donde

NORMAL debería arrojar cuando imc esta entre 18.5 a 25.1

SOBREPESO debería arrojar cuando IMC esta entre 25.1 a 29.9

OBESIDAD debería arrojar cuando IMC esta > a 29.9

Private Sub TALLA_Change()

ActiveCell.FormulaR1C1 = TALLA

End Sub

Private Sub PESO_Change()

ActiveCell.FormulaR1C1 = PESO

PESO = Format(PESO, "#,##")

IMC2020 = Val(PESO / (TALLA * TALLA))

If IMC2020 <= 20 Then

CLASS = "NORMAL" Else CLASSS = "SOBREPESO"

End If

End Sub

Por favor ayuda, se que el código esta mal pero soy nuevo programando

1 respuesta

Respuesta
1

No tengo ni idea de Excel, lo que se dice ni idea. Pero por si te sirve, el código

Todo depende de como escribas la talla y el peso, si en celdas separadas o como me ha parecido entender en una única celda. Voy a explicar ésta última.

El primer cuadro de texto se llama Tallapeso, los demás como las etiquetas

El código del evento Después de actualizar del cuadro de texto TallaPeso( que sería el que deberías poner en la macro que hagas, eso creo).

Private Sub TallaPeso_AfterUpdate()
Talla = Left(Replace(Replace([TallaPeso], " m", ""), " k", ""), InStr(Replace(Replace([TallaPeso], " m", ""), " k", ""), "/") - 1)
Peso = Mid(Replace(Replace([TallaPeso], " m", ""), " k", ""), InStrRev(Replace(Replace([TallaPeso], " m", ""), " k", ""), "/") + 1)
IMC = Round(Peso / Talla ^ 2, 2)
If IMC >= 18.5 And IMC <= 25.1 Then
Resultado = "Normal"
ElseIf IMC > 25.1 And IMC <= 29.9 Then
Resultado = "Sobrepeso"
ElseIf IMC > 29.9 Then
Resultado = "Obesidad"
End If
End Sub

Es decir, lo primero que hace es quitar el espacio entre m ó k y la propia letra(función Replace)

Luego divide la cadena en Peso y Talla(left y Mid)

Para elevar algo al cuadrado no hace falta multiplicarlo por si mismo, para eso está la función ^2. Si es al cubo ^3, etc.

Lo de round es para dejar 2 decimales.

¡Gracias Icue! Revisare el código hoy y le haré saber, pero super tu respuesta y gracias por leer mi pregunta a tiempo.

Please help.

Aquí tengo un formulario que estoy haciendo:

Si trato de ingresar el el PESO me dice el siguiente error:

¿Por favor me puedes explicar por que sucede eso?

Es que si no le pones ni m, ni k, ni espacios te tiene que decir que no lo encuentra. Como te dije, no sabía como escribías ni el peso ni la talla, por eso supuse que sería, algo más o menos como te puse. Pero si en los cuadros de texto señalados con flechas

vas a poner simplemente 1,73 y 88 sobraría parte del código

Sería

Private Sub Peso_AfterUpdate()
IMC = Round(Peso / Talla ^ 2, 2)
If IMC >= 18.5 And IMC <= 25.1 Then
Resultado = "Normal"
ElseIf IMC > 25.1 And IMC <= 29.9 Then
Resultado = "Sobrepeso"
ElseIf IMC > 29.9 Then
Resultado = "Obesidad"
End If
End Sub

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas