Want to win a PS4? Go Premium and enter to win our High-Tech Treats giveaway. Enter to Win

x
Solved

# Converting Fractions to Decimals

Posted on 2003-11-28
Medium Priority
1,111 Views
Using AC2002.

I am using the following code to convert fractions to decimals. However, it won't convert the number if it is a whole number only. Need help in modification.

Private Sub Command1_Click()
Dim x As Integer
Dim y As Integer
Dim z As String
Dim a1 As Integer
Dim a2 As Integer
Dim MyNumber As String

DoCmd.GoToControl "Text1"

x = InStr(1, Text1.Text, " ")
y = InStr(x, Text1.Text, "/")
z = Right\$(Text1.Text, Len(Text1.Text) - x)
y = InStr(1, z, "/")
a1 = Val(Left\$(z, y - 1))
a2 = Val(Right\$(z, Len(z) - y))
MyNumber = Val(Left\$(Text1.Text, x - 1)) + a1 / a2
Text1.Text = MyNumber
End Sub
0
[X]
###### Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

• Help others & share knowledge
• Earn cash & points
• 3
• 2

LVL 19

Expert Comment

ID: 9840167

> I am using the following code to convert fractions to decimals. However, it
> won't convert the number if it is a whole number only. Need help in modification.

If it is a whole number only, then your value will be missing a "/".  So, check for y = 0, and if it is, then just use the whole value.

Private Sub Command1_Click()
Dim x As Integer
Dim y As Integer
Dim z As String
Dim a1 As Integer
Dim a2 As Integer
Dim MyNumber As String

DoCmd.GoToControl "Text1"

x = InStr(1, Text1.Text, " ")
y = InStr(x, Text1.Text, "/")
If ( y > 0 ) Then
z = Right\$(Text1.Text, Len(Text1.Text) - x)
y = InStr(1, z, "/")
a1 = Val(Left\$(z, y - 1))
a2 = Val(Right\$(z, Len(z) - y))
MyNumber = Val(Left\$(Text1.Text, x - 1)) + a1 / a2
Else
MyNumber = Val(Text1.Text)
End IF

Text1.Text = MyNumber
End Sub

Hope That Helps,
Dex*
0

LVL 2

Expert Comment

ID: 9840170
Try using the Eval function just to perform the division.  For Example:

Dim FractionString as string
Dim DecimalValue as Double

FractionString = "5/8"
DecimalValue = Eval(FractionString)

0

Author Comment

ID: 9840241
I inserted your revised code, following are the results:

13 5/8 became 13.625 (works fine)

13 became a Runtime error '5', invalid procedure call and points to this line in the code:
y = InStr(x, Text1.Text, "/")

and when I comment out that line, then the results become:

13 5/8 became 135

13 became 13
0

LVL 19

Expert Comment

ID: 9840245
After further refinement, including rthomsen's suggestion, here is what I came up with:

Private Sub Command1_Click()
Dim nPos As Integer
Dim strValue as String
Dim MyNumber As String
Dim nValue As Double

DoCmd.GoToControl "Text1"
strValue = Text1.Text
nPos = InStr( strValue, " " )
If ( nPos > 0 ) Then
nValue = CLng(Left(strValue, nPos-1))
strValue = Mid(strValue, nPos+1)
Else
nValue = 0
End If
nValue = nValue + Eval( strValue )
MyNumber = CStr(nValue)
Text1.Text = MyNumber
End Sub

If that doesn't work for you, let me know what errors / problems you have.  Thanks.

Dex*
0

LVL 19

Accepted Solution

Dexstar earned 1000 total points
ID: 9840254
The updated version should fix the issues that you just reported.  Try it out and let me know.

Dex*
0

Author Comment

ID: 9840268
Worked just fine. Thanks!
0

## Featured Post

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

This article describes two methods for creating a combo box that can be used to add new items to the row source -- one for simple lookup tables, and one for a more complex row source where the new item needs data for several fields.
Code that checks the QuickBooks schema table for non-updateable fields and then disables those controls on a form so users don't try to update them.
What’s inside an Access Desktop Database. Will look at the basic interface, Navigation Pane (Database Container), Tables, Queries, Forms, Report, Macro’s, and VBA code.
In Microsoft Access, learn different ways of passing a string value within a string argument. Also learn what a “Type Mis-match” error is about.
###### Suggested Courses
Course of the Month9 days, 13 hours left to enroll