Mod Function Returning Long

  • Thread starter Thread starter Guest
  • Start date Start date
G

Guest

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
 
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)
 
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,

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
 
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...
 
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
 
I knew I hung out around here for a reason... Answers above and beyond the
call of duty...
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Back
Top