ExcelBanter

ExcelBanter (https://www.excelbanter.com/)
-   Excel Programming (https://www.excelbanter.com/excel-programming/)
-   -   Overflow (https://www.excelbanter.com/excel-programming/347962-overflow.html)

Erik Beck Jensen

Overflow
 
Excel 2003 SP2





Hello every body


This little sub gives me a runtime overflow. Did I miss something?




Sub ebj()

Dim ll_test As Long

ll_test = 162 * 207


End Sub



I would have expected ll_test to take a value = 33,534. A Long should be
sufficient to hold that. If I change the declaration to Single or Variant I
still get an overflow.



Any suggestions?





Best regards

Erik





Andrew Taylor

Overflow
 
The problem is that VBA tries to calculate
162 * 207 as an Integer, and then convert
to the result to a Long. The first of these
steps causes the overflow. You can get
round this by forcing one of the values
to be a Long:

ll_test = 162& * 207
or
ll_test = CLng(162) * 207

Note that ll_test = clng(162 * 207) will fail,
for the same reason as in the original problem.


Andrew Taylor




Erik Beck Jensen wrote:
Excel 2003 SP2

Hello every body


This little sub gives me a runtime overflow. Did I miss something?




Sub ebj()

Dim ll_test As Long

ll_test = 162 * 207


End Sub



I would have expected ll_test to take a value = 33,534. A Long should be
sufficient to hold that. If I change the declaration to Single or Variant I
still get an overflow.



Any suggestions?





Best regards

Erik



Erik Beck Jensen

Overflow
 
Thanks you very much.

The problem is solved.



Best regards

Erik





"Andrew Taylor" wrote in message
oups.com...
The problem is that VBA tries to calculate
162 * 207 as an Integer, and then convert
to the result to a Long. The first of these
steps causes the overflow. You can get
round this by forcing one of the values
to be a Long:

ll_test = 162& * 207
or
ll_test = CLng(162) * 207

Note that ll_test = clng(162 * 207) will fail,
for the same reason as in the original problem.


Andrew Taylor




Erik Beck Jensen wrote:
Excel 2003 SP2

Hello every body


This little sub gives me a runtime overflow. Did I miss something?




Sub ebj()

Dim ll_test As Long

ll_test = 162 * 207


End Sub



I would have expected ll_test to take a value = 33,534. A Long should be
sufficient to hold that. If I change the declaration to Single or Variant
I
still get an overflow.



Any suggestions?





Best regards

Erik






All times are GMT +1. The time now is 04:41 AM.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
ExcelBanter.com