Urbycoz
Urbycoz

Reputation: 7421

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

Upvotes: 22

Views: 68299

Answers (4)

Alex K.
Alex K.

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:

enter image description here

Upvotes: 41

Prajapati Rajesh
Prajapati Rajesh

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

Uttam Kumar Roy
Uttam Kumar Roy

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

trickwallett
trickwallett

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

Related Questions