While developing a database front end for hand-tool management, I discovered a need to handle both fractional and decimal representations of dimensions in the same text box. This makes it easier on users who worked from a variety of prints to input part feature sizes. To accomplish this, place this function in the LostFocus event of any text box that can receive numerical input. You can also cycle through the appropriate text boxes and run the function against the text value of each. In addition, this function only checks for the inches character (double quotes) at the end of the text string of fractional dimensions. It also looks for spaces and/or dashes between whole numbers and fractions and checks for both forward and backward slashes within fractions. It doesn’t work with negative values:
Private Function ReturnDecimalValue(Size As _ String) As String Dim strSize As String Dim iGap As Integer Dim iSlash As Integer Dim sWhole As Single If Size <> "" Then Size = LTrim(RTrim(Size)) 'previous code may have stripped text to nothing 'if it was just spaces, so test If Size <> "" Then 'strip off inch character (double 'quotes) if it's there If Right(Size, 1) = Chr$(34) Then _ Size = Left(Size, Len(Size) - 1) iGap = InStr(Size, "-") If iGap = 0 Then iGap = InStr(Size, " ") If iGap Then sWhole = CSng(Left(Size, iGap - 1)) strSize = Right(Size, Len(Size) - iGap) iSlash = InStr(strSize, "/") 'user may have input backward slash 'in fraction instead of forward slash; 'verify If iSlash = 0 Then iSlash = InStr(strSize, "") 'convert result to decimal form for 'saving in database If iSlash Then Size = CStr(sWhole + _ (CSng(Left(strSize, iSlash - 1)) / _ CSng(Right(strSize, Len(strSize) - iSlash)))) End If ReturnDecimalValue = SizeEnd Function