Estoy buscando una solución elegante para determinar si una variante es un número entero en VBA. Lamentablemente, si la variante se creó a partir de una cadena, estoy atascado. He aquí un pequeño script de prueba:¿Cómo puedo determinar si una variante es un número entero en VBA?
dim v as variant
v = "42"
if v <> round(v) then
msgBox("<>")
end if
Aquí, el MsgBox aparece, probablemente debido a que la variante se crea a partir de una cadena, a pesar de lo que habría esperado v = a ser redonda (v).
Puede valer la pena preguntarse si realmente necesita manejar cualquier variante y cualquier número entero. ¿Qué tal una cadena de 1000 dígitos? ¿Qué hay de los dobles integrales fuera del alcance de un Long? Será mucho más fácil si especifica exactamente lo que necesita y luego codifica eso. No es el mismo problema, pero vea esta respuesta de Eric Lippert a otra pregunta aquí en Stackoverflow: http://stackoverflow.com/questions/921180/c-round-up/926806#926806 – jtolle