Code thế này đây:Em chân thành cảm ơn anh ndu96081631 đã quan tâm tới câu hỏi của em, hôm nay em gửi thêm file đính kèm mong anh ndu96081631 cùng các anh chị trong diễn đàn giúp em
Function ValExp(ByVal Exp As String)
Dim Tmp As String, Res As Double
On Error Resume Next
Tmp = Replace(Exp, "=", ":")
Tmp = Mid(Tmp, InStr(Tmp, ":") + 1, Len(Tmp))
With CreateObject("VBScript.RegExp")
.Global = True: .Pattern = "[^0-9 + - * / .]"
Res = Evaluate(.Replace(Tmp, ""))
End With
ValExp = Res
End Function
Cũng có sơ sót. Cảm ơn bạn phát hiệnAnh ndu96081631 cái code của anh vẫn bị lỗi 1 số dòng chuỗi công thức nó không hiểu (ví dụ: : 3.6*2.6*0.1-(0.8*0.5+0.2*2)/2=0.536, nhưng khi dùng code của anh lại bằng 0.000) anh xem lại giùm em nhé)
Function ValExp(ByVal Exp As String)
Dim Tmp As String, Res As Double
On Error Resume Next
Tmp = Replace(Exp, "=", ":")
Tmp = Replace(Exp, " ", "")
Tmp = Mid(Tmp, InStr(Tmp, ":") + 1, Len(Tmp))
With CreateObject("VBScript.RegExp")
.Global = True: .Pattern = "[^0-9 + * / ) ( . -]"
Res = Evaluate(.Replace(Tmp, ""))
End With
ValExp = Res
End Function