Si escribo un valor en una celda, lo almacena como se esperaba, pero si configuro el valor a través del código VBA, lo almacena incorrectamente. Para ser más específico, calculé la altura de algo y el valor resultante es 1,15. El número se muestra correctamente, pero cuando hago clic en la celda, el número que realmente se almacena es 1.14999997615814. Hay otra celda que usa este número u otro número según una condición. Esa celda siempre muestra el número almacenado real (1.14999997615814), lo cual es incorrecto. Esto es para un documento técnico que está siendo revisado por ingenieros del gobierno, por lo que incluso una pequeña desviación hará que el documento sea rechazado. Intenté almacenar el número como texto (sin diferencia), redondearlo antes de almacenarlo (sin diferencia), calcularlo con precisión simple o doble antes de almacenarlo, nuevamente sin diferencia en lo que hace Excel. Esto no sucede con todos los valores, pero cuando el resultado calculado fue 1,15 presenta este comportamiento. Lo único que hace que el número se almacene correctamente es escribirlo manualmente y eso anula el propósito de calcular el valor. ¿Alguien tiene alguna idea de lo que está sucediendo y de cómo puedo forzar, coaccionar o sobornar a Excel para que se comporte correctamente?
TIA.
Respuesta1
Todavía no sé qué causó realmente el problema. No te aburriré con el código utilizado para lograr el resultado; en resumen, solo se trata de ubicar los números para sumar y sumarlos. Los valores son (0,0747*2)+(0,25*2)+.05006, lo que equivale a 1,15. La única solución que funcionó fue asignar los resultados a la celda como texto y luego convertirlos a un número como este:
ws.Range("L24").Value = "'" & JobSettings.BrgHeight
ws.Range("L24").Select
Selection.NumberFormat = "General"