Home |
Search |
Today's Posts |
#1
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]() I have been wracking my brains on what happens when we declare a variable, in spite of what programming literature says. The code below declares X as integer and should accordingly handle all values within the bounds -32763 to + 32673. But the code generates an overflow error after p=30,000 and when x =3. Sub Declaratn2() Dim x As Integer Dim p As Long For x = 1 To 1000 p = x * 10000 MsgBox p Next End Sub Is it correct to say that EXCEL is evaluating x against the product x*1000? I am confused. David. -- davidm ------------------------------------------------------------------------ davidm's Profile: http://www.excelforum.com/member.php...o&userid=20645 View this thread: http://www.excelforum.com/showthread...hreadid=484197 |
#2
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
Hi David,
The reason being - when an integer is multiplied with another integer, it will return an integer So, 4 * 10000 (in your case) will make it 40000 & it will try to put that result in a temporary integer variable (before assigning it to p - which is long) So, change your expression to p = clng(x) * 10000 Here, you are telling that multiply a long by an integer Alternatively, you could write x * 10000.0 (this will make it a double data type) HTH Kalpesh |
#3
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
Which is not that far off the answer Simon gave back in August <g.
Kalpesh wrote: Hi David, The reason being - when an integer is multiplied with another integer, it will return an integer So, 4 * 10000 (in your case) will make it 40000 & it will try to put that result in a temporary integer variable (before assigning it to p - which is long) So, change your expression to p = clng(x) * 10000 Here, you are telling that multiply a long by an integer Alternatively, you could write x * 10000.0 (this will make it a double data type) HTH Kalpesh |
#4
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
And another reason never to use "As Integer"
davidm wrote: I have been wracking my brains on what happens when we declare a variable, in spite of what programming literature says. The code below declares X as integer and should accordingly handle all values within the bounds -32763 to + 32673. But the code generates an overflow error after p=30,000 and when x =3. Sub Declaratn2() Dim x As Integer Dim p As Long For x = 1 To 1000 p = x * 10000 MsgBox p Next End Sub Is it correct to say that EXCEL is evaluating x against the product x*1000? I am confused. David. -- davidm ------------------------------------------------------------------------ davidm's Profile: http://www.excelforum.com/member.php...o&userid=20645 View this thread: http://www.excelforum.com/showthread...hreadid=484197 -- Dave Peterson |
#5
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
you have a great memory, rowan<g
-- Gary "Rowan Drummond" wrote in message ... Which is not that far off the answer Simon gave back in August <g. Kalpesh wrote: Hi David, The reason being - when an integer is multiplied with another integer, it will return an integer So, 4 * 10000 (in your case) will make it 40000 & it will try to put that result in a temporary integer variable (before assigning it to p - which is long) So, change your expression to p = clng(x) * 10000 Here, you are telling that multiply a long by an integer Alternatively, you could write x * 10000.0 (this will make it a double data type) HTH Kalpesh |
Reply |
Thread Tools | Search this Thread |
Display Modes | |
|
|
![]() |
||||
Thread | Forum | |||
VBA - variable declaration | Excel Discussion (Misc queries) | |||
External Variable Declaration | Excel Programming | |||
External Variable Declaration | Excel Programming | |||
Global variable declaration! | Excel Programming | |||
Variable Declaration?? | Excel Programming |