MarkK
bit cruncher
- Local time
- Today, 08:30
- Joined
- Mar 17, 2004
- Messages
- 8,554
Here's shorter code...
You can specify precision with the denominator parameter.
Code:
Function GetFraction(ByVal Number As Single, Denominator As Integer) As String
Dim i As Integer
Number = RoundToNearest(Number, 1 / Denominator)
If Number <= 0 Or Number >= 1 Then
Err.Raise 5, "GetFraction()", "Number must be between zero and one"
Else
For i = 1 To Denominator - 1
If CInt(i / Number) = i / Number Then
GetFraction = i & "/" & i / Number
Exit For
End If
Next
End If
End Function
Function RoundToNearest(Number As Single, Optional RoundTo As Single = 1)
RoundToNearest = CLng(Number / RoundTo) * RoundTo
End Function