View Single Post
  #3   Report Post  
Posted to microsoft.public.excel.programming
joel joel is offline
external usenet poster
 
Posts: 9,101
Default Overflow error occurs when multiplying integer constants in excel

32,767 is the largest positive number you can have not 31768.

You are dealing with 16 bit signed arithmetic using 2's compliment. The MSB
bit is the sign so your range of numbers are

When you use twos compliment you invert evry bit and then add 1

the range of numbers are
7FFF (largest postive number) to 8000 + 1 = 8001 (largest negative number)

8000 is not used it is usually refered to Negative Zero.

7FFF (hex) = 32767

"Abe Thomas" wrote:

An overflow error occurs when 2 integer constants (< 32768) are multiplied
that results in a value that is higher than what an integer can hold - see
code below.
This happens all the excel versions I tested.

Anyone out that aware of this problem ?

Sub Mult_Of_2_IntegerConstants_that_result_in_a_LongIn t()
Dim i1 As Long

i1 = 1 * 32767 ' This works since the result is less than 32768

i1 = 2 * 32767 ' This results in an OVERFLOW (the answer is = 32768)

i1 = 2 * 32768 ' This works since one of the operands is = 32768

End Sub