Überlauf trotz Long?

Der Datentyp Integer kann nur ganzzahlige Werte von -32.768 bis +32.767 speichern. Darum verwende ich sehr häufig den Datentyp Long. Aber auch hier kann es zu interessanten Problemen kommen.

Sub ÜberlaufTrotzLong()
    Dim i As Long
    Const Eins As Long = 1

    'geht nicht!
    i = 1000 * 1000

    'besser
    i = 1000000
    'oder
    i = Eins * 1000 * 1000
End Sub

Code eingefügt mit Syntaxhighlighter 4.14


Es ist zu beachten, dass VBA bei der Multiplikation mit 1000 den Datentyp Integer verwendet. Die Berechnung 1000 x 1000 ist allerdings mit Integer nicht möglich. Somit kann auch keine Zuweisung an die Long-Variable erfolgen.

Die beiden Workarounds zeigen wie das Problem gelöst werden kann.

Your rating: Keine Average: 4.8 (6 votes)