Home |
Search |
Today's Posts |
#1
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
What am I missing here...
377.25 Mod 25 is returning 2 instead of 2.25. In the watch window the result of the function is a long. Everything I have read I should be getting a double. Sub ModTest() MsgBox 377.25 Mod 25 End Sub Jim Thomlinson |
#2
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
Jim,
The answer in in Help The modulus, or remainder, operator divides number1 by number2 (rounding floating-point numbers to integers) Note the bit in brackets. VBA Mod behaves differently to Excel Mod. -- HTH RP (remove nothere from the email address if mailing direct) "Jim Thomlinson" wrote in message ... What am I missing here... 377.25 Mod 25 is returning 2 instead of 2.25. In the watch window the result of the function is a long. Everything I have read I should be getting a double. Sub ModTest() MsgBox 377.25 Mod 25 End Sub Jim Thomlinson |
#3
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
Hi Jim,
Here's an excerpt from the help topic on the VBA Mod function: ------------------------------------------------ The modulus, or remainder, operator divides number1 by number2 (rounding floating-point numbers to integers) and returns only the remainder as result. For example, in the following expression, A (result) equals 5. A = 19 Mod 6.7 ------------------------------------------------ -- Rob Bovey, Excel MVP Application Professionals http://www.appspro.com/ * Take your Excel development skills to the next level. * Professional Excel Development http://www.appspro.com/Books/Books.htm "Jim Thomlinson" wrote in message ... What am I missing here... 377.25 Mod 25 is returning 2 instead of 2.25. In the watch window the result of the function is a long. Everything I have read I should be getting a double. Sub ModTest() MsgBox 377.25 Mod 25 End Sub Jim Thomlinson |
#4
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
Jim,
In Visual Basic 6.0, the MOD operator accepted any numeric expression and the result was always returned as an integer. I have to assume that the same is true in VBA. Try using: MsgBox 377.25 - Int(377.25 / 25) * 25 HTH, Bernie MS Excel MVP "Jim Thomlinson" wrote in message ... What am I missing here... 377.25 Mod 25 is returning 2 instead of 2.25. In the watch window the result of the function is a long. Everything I have read I should be getting a double. Sub ModTest() MsgBox 377.25 Mod 25 End Sub Jim Thomlinson |
#5
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
I did not see that anywhere in the help... Must not have looked hard
enough... In MSDN help for VB here is what they say... If number1 or number2 are floating-point values, then division is carried out and the floating-point remainder is returned. I guess I will have to work around it... -- HTH... Jim Thomlinson "Bob Phillips" wrote: Jim, The answer in in Help The modulus, or remainder, operator divides number1 by number2 (rounding floating-point numbers to integers) Note the bit in brackets. VBA Mod behaves differently to Excel Mod. -- HTH RP (remove nothere from the email address if mailing direct) "Jim Thomlinson" wrote in message ... What am I missing here... 377.25 Mod 25 is returning 2 instead of 2.25. In the watch window the result of the function is a long. Everything I have read I should be getting a double. Sub ModTest() MsgBox 377.25 Mod 25 End Sub Jim Thomlinson |
#6
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
Jim,
That is true of VB.NET, but not VBA. "In Visual Basic .NET, the MOD operator no longer accepts variants, and if either operand is a floating-point number, the result will be a floating-point number." HTH, Bernie MS Excel MVP "Jim Thomlinson" wrote in message ... I did not see that anywhere in the help... Must not have looked hard enough... In MSDN help for VB here is what they say... If number1 or number2 are floating-point values, then division is carried out and the floating-point remainder is returned. I guess I will have to work around it... -- HTH... Jim Thomlinson "Bob Phillips" wrote: Jim, The answer in in Help The modulus, or remainder, operator divides number1 by number2 (rounding floating-point numbers to integers) Note the bit in brackets. VBA Mod behaves differently to Excel Mod. -- HTH RP (remove nothere from the email address if mailing direct) "Jim Thomlinson" wrote in message ... What am I missing here... 377.25 Mod 25 is returning 2 instead of 2.25. In the watch window the result of the function is a long. Everything I have read I should be getting a double. Sub ModTest() MsgBox 377.25 Mod 25 End Sub Jim Thomlinson |
#7
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
And you learn something new every day... Thanks guys...
-- HTH... Jim Thomlinson "Bernie Deitrick" wrote: Jim, In Visual Basic 6.0, the MOD operator accepted any numeric expression and the result was always returned as an integer. I have to assume that the same is true in VBA. Try using: MsgBox 377.25 - Int(377.25 / 25) * 25 HTH, Bernie MS Excel MVP "Jim Thomlinson" wrote in message ... What am I missing here... 377.25 Mod 25 is returning 2 instead of 2.25. In the watch window the result of the function is a long. Everything I have read I should be getting a double. Sub ModTest() MsgBox 377.25 Mod 25 End Sub Jim Thomlinson |
#8
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
I knew I hung out around here for a reason... Answers above and beyond the
call of duty... -- HTH... Jim Thomlinson "Bernie Deitrick" wrote: Jim, That is true of VB.NET, but not VBA. "In Visual Basic .NET, the MOD operator no longer accepts variants, and if either operand is a floating-point number, the result will be a floating-point number." HTH, Bernie MS Excel MVP "Jim Thomlinson" wrote in message ... I did not see that anywhere in the help... Must not have looked hard enough... In MSDN help for VB here is what they say... If number1 or number2 are floating-point values, then division is carried out and the floating-point remainder is returned. I guess I will have to work around it... -- HTH... Jim Thomlinson "Bob Phillips" wrote: Jim, The answer in in Help The modulus, or remainder, operator divides number1 by number2 (rounding floating-point numbers to integers) Note the bit in brackets. VBA Mod behaves differently to Excel Mod. -- HTH RP (remove nothere from the email address if mailing direct) "Jim Thomlinson" wrote in message ... What am I missing here... 377.25 Mod 25 is returning 2 instead of 2.25. In the watch window the result of the function is a long. Everything I have read I should be getting a double. Sub ModTest() MsgBox 377.25 Mod 25 End Sub Jim Thomlinson |
Reply |
Thread Tools | Search this Thread |
Display Modes | |
|
|
![]() |
||||
Thread | Forum | |||
http://CannotDeleteFile.net - Cannot Delete File? Try Long Path ToolFilename is too long? Computer Complaining Your Filename Is Too Long? TheLong Path Tool Can Help While most people can go about their businessblissfully unaware of the Windo | Excel Discussion (Misc queries) | |||
Long Long Long Nested If Function | Excel Discussion (Misc queries) | |||
HELP! with long function | Excel Worksheet Functions | |||
Returning one text value in a long list? | Excel Worksheet Functions | |||
Problem with VBA returning the contents of a long formula. | Excel Discussion (Misc queries) |