Was ist der größte Wert (die größte Zahl), den ich in einer Excel-VBA-Variable speichern kann?

Was ist der größte Wert (die größte Zahl), den ich in einer Excel-VBA-Variable speichern kann?

Ich verwende Microsoft Office Excel 2007.

Angenommen, ich habe die Nummer 12500000000000.

Dim value1 as long

value1 = CLng(copyrng2.value)

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

Der obige Code schlägt aufgrund eines Überlaufs fehl.

Kann ich diese Zahl in einer beliebigen Excel-Variable (VBA) speichern? Wenn nicht, was kann ich tun, um sie zu speichern, vorzugsweise in einem Format (Integer, Long usw.), mit dem Berechnungen durchgeführt werden können?

Antwort1

Die vorhandene Antwort ist insofern korrekt, als dass Sie dieDoppeltDatentyp. Damit ist das Problem gelöst. Jetzt werde ich einige technische Details einbringen.

Die größte Zahl, die der Datentyp „Double“ speichern kann (und zugleich die größte Zahl, die Excel verarbeiten kann), ist 1,79769313486231570 • 10 308 . Die größte Zahl, die Sie (ohne Formel) in eine Zelle eingeben können, ist jedoch 9,99999999999999 • 10 307 . Beachten Sie, dass Sie bei derart großen Zahlen viel an Genauigkeit verlieren – das Hinzufügen einer vergleichsweise kleinen Zahl zu Dingen dieser Größenordnung hat eine gute Chance, nichts zu bewirken.Gleitkommazahlen können etwas seltsam werden.

Die maximale Größe des Datentyps „Long“ ist im Vergleich zum Bereich von „Double“ ein Tropfen auf dem heißen Stein; eine vorzeichenbehaftete 64-Bit-Ganzzahl kann nur bis 9.223.372.036.854.775.807 gehen. Zumindest geht Ihnen dort garantiert nichts durch Rundungen verloren, solange Sie nur mit ganzen Zahlen arbeiten.

Quellen:Excel-Spezifikationen und -Grenzwerte,Datentypübersicht

Antwort2

Excel kann nur 15 Ziffern speichern. Die größte Zahl ist 99999999999999. Wenn Sie versuchen, eine 16-stellige Zahl einzugeben, wird die letzte Zahl ab der 16. Stelle um 0 gerundet.

Antwort3

Sie benötigenDoppeltstattLang. MitB2wie:

Bildbeschreibung hier eingeben

Dieser Code löst einen Fehler aus:

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

Dieser Code wird jedoch nicht:

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

Bildbeschreibung hier eingeben

Antwort4

Verwenden Sie den DecimalVariablentyp. Sie können eine Zahl nicht als deklarieren, Decimalaber Sie können sie in einer VariantVariablen speichern.

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

NOTIZ: Wenn Sie bei den großen Zahlen, mit denen Sie arbeiten (1250000000000), versuchen, eine Dezimalzahl zu speichern, scheint Excel diese Zahl auf 1 Dezimalstelle zu runden.

verwandte Informationen