Inputbox Convert Millimeters to Feet and Inches

R

RShow

Greetings,
I posted here earlier and had a wonderful response. Thank you Harold. That
code did the trick.
New Scenerio:
How can you convert Millimeters from an input box and show the values
broken out among four textboxes.
The four textboxes are labeled Feet, Inches, Top Fraction, and Bottom
Fraction, respectfully.

1669.598 MM in textbox should convert to 5' 5 1/2 " (I'm pretty sure
that's correct)
Textbox Feet = 5
Textbox Inches = 5
Textbox Top Fraction = 1
Textbox Bottom Fraction = 2

Any help is greatly appreciated.
Thank you for your time.
 
N

Nick Hebb

I created a little form with txtMM as the input and txtFT, txtIn,
txtNumerator (aka top fraction), and txtDenominator (aka bottom
fraction) as the outputs. The following is the conversion code (using a
command button - cmdCalc) to drive it:

Private Sub cmdCalc_Click()

Const CONV_FACTOR As Double = 304.8 'mm to ft
Const PROXIMITY As Double = 0.1
Const MAX_ITERATIONS As Integer = 1000

Dim mm As Double
Dim feet As Double
Dim inches As Double
Dim numerator As Double
Dim denominator As Integer
Dim remainder As Double

If Not IsNumeric(Me.txtMM) Then
MsgBox "Error"
Exit Sub
End If

mm = CDbl(Me.txtMM)
feet = mm / CONV_FACTOR
Me.txtFt = Int(feet)

remainder = feet - CInt(feet)
inches = remainder * 12
Me.txtIn = Int(inches)

remainder = inches - Int(inches)
denominator = 1
Do
denominator = denominator + 1
numerator = remainder * denominator
Loop While Abs(numerator - Round(numerator, 0)) > PROXIMITY _
And (denominator <= MAX_ITERATIONS)

If denominator = MAX_ITERATIONS Then
MsgBox "Cannot calculate to desired proximity"
Else
Me.txtNumerator = CInt(numerator)
Me.txtDenominator = denominator
End If

End Sub

The PROXIMITY value is how close you want the numerator to be to a
whole number. The smaller the number, the more funky (but more
accurate) results you'll get. The MAX_ITERATIONS is the maximum number
of times you want the loop to run.

I get 5' 5-3/4", which I verified as correct.
 

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

Top