Problemas con el control de cheques en el programa vb
Esto se debe a que declaraste tanto s como i como variables enteras (Integer). Deberías saber qué es un número entero, ¿verdad? Es un número sin decimales. VB eliminará automáticamente los decimales de s e i (cualquier valor mayor que 0,5 se redondeará a 1), por lo que s=s+0,9 es lo mismo que s=s+1. ¡i=i+0.6 también es lo mismo que i=i+1!
Además, palabras como s=s e i=i parecen tontas y son completamente innecesarias.
Cambiar a esto: Private?Sub?Command1_Click()
Dim?n?As?Integer,?s?As?Single están configurados en números de punto flotante de precisión simple, por lo que que se admiten decimales
El valor inicial de s?=?0's es 0, por lo que esta línea se puede eliminar
For?n?=?0?To?24
If?Check1(n).Value?=?1?Then'Solo necesitas juzgar = 1, y si es 0, no hay necesidad de procesarlo
s?= ?s?+?0.9
End?If
Next?n
Dim?i?As?Single'i también está configurado con precisión simple número de punto flotante. Además, la n definida anteriormente se puede usar repetidamente y no es necesario declarar m
i?=?0'. De la misma manera, esta línea también se puede eliminar
<. p>For?n?=?0? To?24Si?Check2(n).Value?=?1?Then'Igual que arriba
i?=?i ?+?0.6
Fin ?If
Siguiente?n
jstxt.Text?=?(s?+?i)?/?25 p>
Además, si el programa necesita optimizarse para El más simple puede ser así: Private?Sub?Command1_Click()
Dim?n?As?Integer,?s?As ?Único,?i?Como?Único
Para? n?=?0?A?24
Si?Check1(n).Valor?=?1?Entonces?s ?=?s?+?0.9
Si?Check2 (n).Valor?=?1?Entonces?i?=?i?+?0.6
Siguiente?n
jstxt.Text?=?(s?+?i )?/?25 También hay uno más simple: Private?Sub?Command1_Click()
Dim?n?As? Entero,?s?As?Single,?i?As?Single
Para?n?=?0?To?24
s?=?s?+?0.9? *?Check1(n).Value
i?=? i?+?0.6?*?Check2(n).Value
Siguiente?n
jstxt.Text?=?(s?+?i)?/?25 El último. ¡Si puedes ver cómo funciona por ti mismo, mejorará enormemente tus habilidades de programación!