怎么求出一个任意四则运算的结果?允许有括号,比如:
(1+(5+4)*2)/3

解决方案 »

  1.   

    这样吗?
    Dim aa As Double
    aa = (1 + (5 + 4) * 2) / 3
    MsgBox aa
      

  2.   

    Option Explicit'Reference MicroSoft Script Control
    Private Sub Form_Load()
        Dim o As New ScriptControl
        
        o.Language = "VBScript"
        MsgBox o.Eval("(1+(5+4*2))/3")
        Set o = Nothing
        
    End Sub
      

  3.   

    '可以这样:
    Private Declare Function EbExecuteLine Lib "vba6.dll" (ByVal pStringToExec As Long, ByVal Unknownn1 As Long, ByVal Unknownn2 As Long, ByVal fCheckOnly As Long) As Long
     
    Private Function ExecuteLine(sCode As String, Optional fCheckOnly As Boolean) As Boolean
           ExecuteLine = EbExecuteLine(StrPtr(sCode), 0&, 0&, Abs(fCheckOnly)) = 0
    End Function
     
    Private Sub Command1_Click()
    ExecuteLine "msgbox " & Text1.Text
    End Sub
      

  4.   

    利用API实现字符串表达式的计算:
    Option Explicit
    Private Declare Function EbExecuteLine Lib "vba6.dll" (ByVal pStringToExec As Long, ByVal Unknownn1 As Long, ByVal Unknownn2 As Long, ByVal fCheckOnly As Long) As LongPrivate Function ExecuteLine(sCode As String, Optional fCheckOnly As Boolean) As Boolean
        ExecuteLine = EbExecuteLine(StrPtr(sCode), 0&, 0&, Abs(fCheckOnly)) = 0
    End Function
    Sub calc(ByVal x As String)
    Dim result
    ExecuteLine "dim x as double"
    ExecuteLine "x= " & x
    ExecuteLine "clipboard.settext x"
    result = Clipboard.GetText
    MsgBox x & "=" & result
    Set result = Nothing
    End SubPrivate Sub Command1_Click()
    calc Text1
    End SubPrivate Sub Form_Load()
    Text1.Text = "1+2*3-4/5"
    End Sub
      

  5.   

    to : leolan(史留香) 
    发生错误,是New ScriptControl 用户类型没定义,
    是什么问题?要添加什么组件?
      

  6.   

    用EbExecuteLine的話生成exe後在未安裝VB6的機器上不能正常運作(缺少vba6.dll),只能在打包時將vba6.dll打包進去安裝後方可正常運作,所以還是建議樓主使用MicroSoft Script Control.
      

  7.   

    Menu: Project --> references... --> MicroSoft Script Control 1.0
      

  8.   

    谢谢GGL123() :
    成功,结帐
      

  9.   

    这样安全点:
    用WebBrowser控件
    WebBrowser1.Navigate "javascript:" & "(1+(5+4)*2)/3"
    msgbox WebBrowser1.Document.body.innerHTML
      

  10.   

    如果用WebBrowser控件的话,在那里添加?