![]() |
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!!?? |
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 |
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 |
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