ExcelBanter

ExcelBanter (https://www.excelbanter.com/)
-   Excel Programming (https://www.excelbanter.com/excel-programming/)
-   -   Simple If statement encounter error (https://www.excelbanter.com/excel-programming/397987-simple-if-statement-encounter-error.html)

Sing

Simple If statement encounter error
 
Dear Excel Gurus,

I have just encountered the strangest error. Is it a bug in Excel VBA
compiler?

Below statement encountered overflow error (run-time error 6);
If (turnoverToday = (150 * 1000)) Then

Below statement encounters no error;
If (turnoverToday = (150000)) Then

Aren't they the same!!??



Dave Peterson

Simple If statement encounter error
 
Since both 150 and 1000 are integers, excel's VBA will use store the
intermediate result in an integer.

And 150*1000=150000 is too big to fit into an integer.

You have a few choices:

If (TurnOverToday = (CLng(150) * 1000)) Then
If (TurnOverToday = 150& * 1000)) Then
(& is the type-declaration character for Long)

Dim myNum1 as long
dim myNum2 as long 'or make them constants
mynum1 = 150
mynum2 = 1000
If (TurnOverToday = (mynum1 * mynum2) Then



Sing wrote:

Dear Excel Gurus,

I have just encountered the strangest error. Is it a bug in Excel VBA
compiler?

Below statement encountered overflow error (run-time error 6);
If (turnoverToday = (150 * 1000)) Then

Below statement encounters no error;
If (turnoverToday = (150000)) Then

Aren't they the same!!??


--

Dave Peterson

joel

Simple If statement encounter error
 
Dave: There is a very simple solution
If (turnoverToday = (150# * 1000#)) Then

"Dave Peterson" wrote:

Since both 150 and 1000 are integers, excel's VBA will use store the
intermediate result in an integer.

And 150*1000=150000 is too big to fit into an integer.

You have a few choices:

If (TurnOverToday = (CLng(150) * 1000)) Then
If (TurnOverToday = 150& * 1000)) Then
(& is the type-declaration character for Long)

Dim myNum1 as long
dim myNum2 as long 'or make them constants
mynum1 = 150
mynum2 = 1000
If (TurnOverToday = (mynum1 * mynum2) Then



Sing wrote:

Dear Excel Gurus,

I have just encountered the strangest error. Is it a bug in Excel VBA
compiler?

Below statement encountered overflow error (run-time error 6);
If (turnoverToday = (150 * 1000)) Then

Below statement encounters no error;
If (turnoverToday = (150000)) Then

Aren't they the same!!??


--

Dave Peterson


Dave Peterson

Simple If statement encounter error
 
Seems pretty close to:
If (TurnOverToday = 150& * 1000)) Then
(& is the type-declaration character for Long)


Except # is the type-declaration for Double.

And you don't actually need to use them on each of the constants. One is
enough.


Joel wrote:

Dave: There is a very simple solution
If (turnoverToday = (150# * 1000#)) Then

"Dave Peterson" wrote:

Since both 150 and 1000 are integers, excel's VBA will use store the
intermediate result in an integer.

And 150*1000=150000 is too big to fit into an integer.

You have a few choices:

If (TurnOverToday = (CLng(150) * 1000)) Then
If (TurnOverToday = 150& * 1000)) Then
(& is the type-declaration character for Long)

Dim myNum1 as long
dim myNum2 as long 'or make them constants
mynum1 = 150
mynum2 = 1000
If (TurnOverToday = (mynum1 * mynum2) Then



Sing wrote:

Dear Excel Gurus,

I have just encountered the strangest error. Is it a bug in Excel VBA
compiler?

Below statement encountered overflow error (run-time error 6);
If (turnoverToday = (150 * 1000)) Then

Below statement encounters no error;
If (turnoverToday = (150000)) Then

Aren't they the same!!??


--

Dave Peterson


--

Dave Peterson


All times are GMT +1. The time now is 02:15 PM.

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