VBcoders Guest



Don't have an account yet? Register
 


Forgot Password?



Evaluate Equation

by Lefteris Eleftheriades (29 Submissions)
Category: Math/Dates
Difficulty: Intermediate
Date Added: Wed 3rd February 2021
Rating: (5 Votes)

Evaluate any Mathematical Equation
like: Evaluate("(5+3)*2")

Rate Evaluate Equation

Function Evaluate(ByVal Equation As String)
 Dim i&, P%, Si&
 Equation = Replace(Replace(Equation, ",", "."), "--", "")
 'Parenthesis Begins with outermost
 For i = 1 To Len(Equation)
  If Mid(Equation, i, 1) = "(" Then
  P = P + 1
  If P = 1 Then Si = i
  End If
  If Mid(Equation, i, 1) = ")" Then
  If P = 1 Then
   Evaluate = Evaluate(Mid(Equation, 1, Si - 1) & Evaluate(Mid(Equation, Si + 1, i - 1 - Si)) & Mid(Equation, i + 1))
   Exit Function
  End If
  P = P - 1
  End If
 Next
 
 'Addition / Substruction
  For i = Len(Equation) To 1 Step -1
   If Mid(Equation, i, 1) = "+" Then
    If i > 1 Then
      If Mid(Equation, i - 1, 1) <> "*" And Mid(Equation, i - 1, 1) <> "/" Then
       Evaluate = Evaluate(Mid(Equation, 1, i - 1)) + Evaluate(Mid(Equation, i + 1))
       Exit Function
      End If
    Else
      Evaluate = Evaluate(Mid(Equation, 1, i - 1)) + Evaluate(Mid(Equation, i + 1))
      Exit Function
    End If
   End If
   If Mid(Equation, i, 1) = "-" Then
    If i > 1 Then
      If Mid(Equation, i - 1, 1) <> "*" And Mid(Equation, i - 1, 1) <> "/" Then
       Evaluate = Evaluate(Mid(Equation, 1, i - 1)) - Evaluate(Mid(Equation, i + 1))
       Exit Function
      End If
    Else
      Evaluate = Evaluate(Mid(Equation, 1, i - 1)) - Evaluate(Mid(Equation, i + 1))
      Exit Function
    End If
   End If
  Next
 
 'Multiplication / Division
 For i = Len(Equation) To 1 Step -1
  If Mid(Equation, i, 1) = "*" Then
  Evaluate = Evaluate(Mid(Equation, 1, i - 1)) * Evaluate(Mid(Equation, i + 1))
  Exit Function
  End If
  If Mid(Equation, i, 1) = "/" Then
  Evaluate = Evaluate(Mid(Equation, 1, i - 1)) / Evaluate(Mid(Equation, i + 1))
  Exit Function
  End If
 Next
 
 Evaluate = Val(Equation)
End Function

Download this snippet    Add to My Saved Code

Evaluate Equation Comments

No comments have been posted about Evaluate Equation. Why not be the first to post a comment about Evaluate Equation.

Post your comment

Subject:
Message:
0/1000 characters