Home |
Search |
Today's Posts |
#1
Posted to microsoft.public.excel.programming
|
|||
|
|||
Modulus and the Mod function
The Excel formula MOD(436.15,1) returns the value 0.15. However the Mod function in VBA returns the value 0, as (quoting from online help) "Usually, the data type of result is a Byte, Byte variant, Integer, Integer variant, Long, or Variant containing a Long, regardless of whether or not result is a whole number." Can any kind soul indicate how I might achieve the result that the Excel formula gives? I am basically trying to get my code to split 436.15 into two elements, 436 and 15, so that I can print the two values to a text file using the appropriate decimal delimiter for any given country. Thanks in advance for any help. Mark Woolven |
#2
Posted to microsoft.public.excel.programming
|
|||
|
|||
Modulus and the Mod function
You could try something like this:
Function GetDecimalPart(RealValue as Double) as Double Dim IntTemp as Integer 'Because it truncates, IntTemp will now store the Whole number part of RealValue IntTemp = RealValue 'Now subtract the whole number part of RealValue from RealValue, to get the Decimal part... GetDecimalPart = RealValue - IntTemp end function -----Original Message----- The Excel formula MOD(436.15,1) returns the value 0.15. However the Mod function in VBA returns the value 0, as (quoting from online help) "Usually, the data type of result is a Byte, Byte variant, Integer, Integer variant, Long, or Variant containing a Long, regardless of whether or not result is a whole number." Can any kind soul indicate how I might achieve the result that the Excel formula gives? I am basically trying to get my code to split 436.15 into two elements, 436 and 15, so that I can print the two values to a text file using the appropriate decimal delimiter for any given country. Thanks in advance for any help. Mark Woolven . |
#3
Posted to microsoft.public.excel.programming
|
|||
|
|||
Modulus and the Mod function
One way:
Public Function Frac(ByVal inVal As Variant) As Variant Select Case VarType(inVal) Case vbSingle, vbDouble, vbCurrency, _ vbDate, vbInteger, vbLong Frac = inVal - Fix(inVal) Case Else Frac = CVErr(xlErrValue) End Select End Function 'Frac() In article , "Mark Woolven" wrote: The Excel formula MOD(436.15,1) returns the value 0.15. However the Mod function in VBA returns the value 0, as (quoting from online help) "Usually, the data type of result is a Byte, Byte variant, Integer, Integer variant, Long, or Variant containing a Long, regardless of whether or not result is a whole number." Can any kind soul indicate how I might achieve the result that the Excel formula gives? I am basically trying to get my code to split 436.15 into two elements, 436 and 15, so that I can print the two values to a text file using the appropriate decimal delimiter for any given country. Thanks in advance for any help. Mark Woolven |
Reply |
Thread Tools | Search this Thread |
Display Modes | |
|
|
Similar Threads | ||||
Thread | Forum | |||
LINKEDRANGE function - a complement to the PULL function (for getting values from a closed workbook) | Excel Worksheet Functions | |||
Vezerid Modulus 11 | Excel Discussion (Misc queries) | |||
modulus 11 formula | Excel Worksheet Functions | |||
Emulate Index/Match combo function w/ VBA custom function | Excel Worksheet Functions | |||
User-Defined Function pre-empting Built-in Function? How to undo???? | Excel Programming |