ExcelBanter

ExcelBanter (https://www.excelbanter.com/)
-   Excel Programming (https://www.excelbanter.com/excel-programming/)
-   -   Mod Function Returning Long (https://www.excelbanter.com/excel-programming/336427-mod-function-returning-long.html)

Jim Thomlinson[_4_]

Mod Function Returning Long
 
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

Bob Phillips[_6_]

Mod Function Returning Long
 
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




Rob Bovey

Mod Function Returning Long
 
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




Bernie Deitrick

Mod Function Returning Long
 
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




Jim Thomlinson[_4_]

Mod Function Returning Long
 
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





Bernie Deitrick

Mod Function Returning Long
 
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







Jim Thomlinson[_4_]

Mod Function Returning Long
 
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





Jim Thomlinson[_4_]

Mod Function Returning Long
 
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








All times are GMT +1. The time now is 07:19 PM.

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