Reputation: 7421
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.
Upvotes: 22
Views: 68299
Reputation: 175768
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:
Upvotes: 41
Reputation: 11
In VB Integer variable range is -32,768 to 32,767 If any variable value is more than this range in your program. Please declare variable in long if your count is more than 32767 then not given any error in your program.
Dim lngid AS long
Upvotes: 1
Reputation: 2058
In VB Integer variable range is -32,768 to 32,767 If any variable value is more than this range in your program,you have to declare Data type Long instead of Integer.
Dim intID as integer
intID = x * 10000
Dim lngID AS Long
lngID = x * CLng(10000)
' if 10000
' whatever you want to be
Upvotes: 1
Reputation: 2468
in VB6, the Integer type is a whole number which ranges from -32768 to 32767.
You would be best using the Long
type here.
Upvotes: 11