change this fuction to round to nearest 16

allenrobberson

New Member
Joined
Jan 25, 2016
Messages
2
change this fuction to round to nearest 16


Code:
[COLOR=#000000]Public Function feet(LenString As String)[/COLOR]    Dim FootSign As Integer
    Dim InchSign As Integer
    Dim SpaceSign As Integer
    Dim FracSign As Integer
    Dim InchString As String
    Dim Word2 As String
    ' Copyright 1999, 2005 MrExcel.com
    LenString = Application.WorksheetFunction.Trim(LenString)
    'The find function returns an error when the target is not found
    'Resume Next will prevent VBA from halting execution.
    On Error Resume Next
    FootSign = Application.WorksheetFunction.Find("'", LenString)
    If IsEmpty(FootSign) Or FootSign = 0 Then
        ' There are no feet in this expression
        feet = 0
        FootSign = 0
    Else
        feet = Val(Left(LenString, FootSign - 1))
    End If

    ' Handle the case where the foot sign is the last character
    If Len(LenString) = FootSign Then Exit Function
    ' Isolate the inch portion of the string
    InchString = Application.WorksheetFunction.Trim(Mid(LenString, FootSign + 1))
    ' Strip off the inch sign, if there is one
    InchSign = Application.WorksheetFunction.Find("""", InchString)
    If Not IsEmpty(InchSign) Or InchSign = 0 Then
        InchString = Application.WorksheetFunction.Trim(Left(InchString, InchSign - 1))
    End If
  
    ' Do we have two words left, or one?
    SpaceSign = Application.WorksheetFunction.Find(" ", InchString)
    If IsEmpty(SpaceSign) Or SpaceSign = 0 Then
        ' There is only one word here.  Is it inches or a fraction?
        FracSign = Application.WorksheetFunction.Find("/", InchString)
        If IsEmpty(FracSign) Or FracSign = 0 Then
            'This word is inches
            feet = feet + Val(InchString) / 12
        Else
            ' This word is fractional inches
            feet = feet + (Val(Left(InchString, FracSign - 1)) / Val(Mid(InchString, FracSign + 1))) / 12
        End If
    Else
        ' There are two words here.  First word is inches
        feet = feet + Val(Left(InchString, SpaceSign - 1)) / 12
        ' Second word is fractional inches
        Word2 = Mid(InchString, SpaceSign + 1)
        FracSign = Application.WorksheetFunction.Find("/", Word2)
        If IsEmpty(FracSign) Or FracSign = 0 Then
            ' Return an error
            feet = "VALUE!"
        Else
            If FracSign = 0 Then
                feet = "VALUE!"
            Else
                feet = feet + (Val(Left(Word2, FracSign - 1)) / Val(Mid(Word2, FracSign + 1))) / 12
            End If
        End If
    End If
End Function
[COLOR=#000000][FONT=Times New Roman]
[/FONT][/COLOR]
Public Function LenText(FeetIn As Double)
    ' This function will change a decimal number of feet to the text string
    ' representation of feet, inches, and fractional inches.
    ' It will round the fractional inches to the nearest 1/x where x is the denominator.
    ' Copyright 1999 MrExcel.com
    Denominator = 32 ' must be 2, 4, 8, 16, 32, 64, 128, etc.
    NbrFeet = Fix(FeetIn)
    InchIn = (FeetIn - NbrFeet) * 12
    NbrInches = Fix(InchIn)
    FracIn = (InchIn - NbrInches) * Denominator
    Numerator = Application.WorksheetFunction.Round(FracIn, 0)
    If Numerator = 0 Then
        FracText = ""
    ElseIf InchIn >= (11 + (31.4999999 / 32)) Then
        NbrFeet = NbrFeet + 1
        NbrInches = 0
        FracText = ""
    ElseIf Numerator = Denominator Then
        NbrInches = NbrInches + 1
        FracText = ""    
    Else
        Do
            ' If the numerator is even, divide both numerator and divisor by 2
            If Numerator = Application.WorksheetFunction.Even(Numerator) Then
                Numerator = Numerator / 2
                Denominator = Denominator / 2
            Else
                FracText = " " & Numerator & "/" & Denominator
                Exit Do
            End If
        Loop    
    End If
    LenText = NbrFeet & "' " & NbrInches & FracText & """" [COLOR=#000000]End Function[/COLOR]
 

Excel Facts

When did Power Query debut in Excel?
Although it was an add-in in Excel 2010 & Excel 2013, Power Query became a part of Excel in 2016, in Data, Get & Transform Data.

Forum statistics

Threads
1,216,130
Messages
6,129,056
Members
449,484
Latest member
khairianr

We've detected that you are using an adblocker.

We have a great community of people providing Excel help here, but the hosting costs are enormous. You can help keep this site running by allowing ads on MrExcel.com.
Allow Ads at MrExcel

Which adblocker are you using?

Disable AdBlock

Follow these easy steps to disable AdBlock

1)Click on the icon in the browser’s toolbar.
2)Click on the icon in the browser’s toolbar.
2)Click on the "Pause on this site" option.
Go back

Disable AdBlock Plus

Follow these easy steps to disable AdBlock Plus

1)Click on the icon in the browser’s toolbar.
2)Click on the toggle to disable it for "mrexcel.com".
Go back

Disable uBlock Origin

Follow these easy steps to disable uBlock Origin

1)Click on the icon in the browser’s toolbar.
2)Click on the "Power" button.
3)Click on the "Refresh" button.
Go back

Disable uBlock

Follow these easy steps to disable uBlock

1)Click on the icon in the browser’s toolbar.
2)Click on the "Power" button.
3)Click on the "Refresh" button.
Go back
Back
Top