Search code examples
vb6integeroverflow

VB6 overflow error with large integers


I am trying to set an integer value as such:

Dim intID as integer
intID = x * 10000

This works ok when x is 3 or less. But when x is 4, this gives me the error:

run-time error 6 Overflow

I don't understand why this is. I can set intID to 40000 directly without any problems, so it's obviously capable of storing large numbers.

enter image description here


Solution

  • You cannot set a vb6 integer to 40000 as they are signed 16 bit numbers so +32767 is the maximum.

    Long is the 32 bit type.

    However as a caveat, if you were to:

    Dim lngID As Long
    lngID = 4 * 10000
    

    You would still get an overflow as literal numbers default to Integer, to correct that just type one as long with & or cast one as long using CLng():

    Dim lngID As Long
    lngID = 4 * 10000&
    lngID = 4 * CLng(10000)
    

    Update:

    enter image description here