¿Cuál es el valor (número) más grande que puedo almacenar en una variable de Excel VBA?

¿Cuál es el valor (número) más grande que puedo almacenar en una variable de Excel VBA?

Estoy usando Microsoft Office Excel 2007.

Supongamos que tengo el número 12500000000000.

Dim value1 as long

value1 = CLng(copyrng2.value)

'where copyrng2 is a range (cell) variable containing 12500000000000

El código anterior fallará debido a un desbordamiento.

¿Puedo almacenar ese número en cualquier variable de Excel (VBA)? Si no, ¿qué puedo hacer para almacenarlo, preferiblemente en un formato (entero, largo, etc.) en el que se puedan realizar cálculos?

Respuesta1

La respuesta existente es correcta porque necesita usar elDobletipo de datos. Eso resuelve el problema, ahora traeré algunos detalles técnicos.

El número más grande que puede almacenar el tipo de datos Double (también el número más grande que Excel puede manejar) es 1.79769313486231570 • 10 308 . Sin embargo, el número más grande que puedes poner en una celda (sin fórmula) es 9,99999999999999 • 10 307 . Tenga en cuenta que perderá mucha precisión cuando trabaje con números tan grandes: agregar un número comparativamente pequeño a cosas de esa magnitud tiene muchas posibilidades de no hacer nada.El punto flotante puede volverse un poco extraño.

El tamaño máximo del tipo de datos Long es una gota en el océano en comparación con el rango de Double; un entero de 64 bits con signo sólo puede llegar hasta 9.223.372.036.854.775.807. Al menos tienes la garantía de no perder nada al redondear allí, siempre y cuando trabajes solo con números enteros.

Fuentes:Especificaciones y límites de Excel,resumen de tipo de datos

Respuesta2

Un excel puede almacenar sólo 15 dígitos. Hasta que el número más grande sea 999999999999999. Si intenta escribir un número de 16 dígitos, redondeará el último número a 0 desde el puesto 16.

Respuesta3

Necesitas usarDobleen vez deLargo. ConB2como:

ingrese la descripción de la imagen aquí

Este código arrojará un error:

Sub dural()
    Dim d As Long
    d = Range("B2").Value
End Sub

Pero este código no:

Sub BigNumber()
    Dim d As Double
    d = Range("B2").Value
    MsgBox d
End Sub

ingrese la descripción de la imagen aquí

Respuesta4

Utilice el Decimaltipo de variable. No puedes declarar un número como Decimalpero puedes almacenarlo en una Variantvariable.

Dim value1 as Variant
value1 = CDec(copyrng2.value)

NOTA: Con los números grandes con los que está tratando (12500000000000), si intenta almacenar un decimal, Excel parece redondear ese número a 1 decimal.

información relacionada