text1="1+3+5*3"
怎么让text2=1+3+5*3=19,text1不定长
 就是把字符串转化为数学公式

解决方案 »

  1.   

    已解决分享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 Long Private 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 Sub Private Sub Command1_Click() 
    calc Text1 
    End Sub Private Sub Form_Load() 
    Text1.Text = "1+2*3-4/5" 
    End Sub
      

  2.   

    新问题,如果是变量呢??a=1 b=2 c=3 text1=a+b+c,怎么处理??
      

  3.   

    你只要写text1.text=a+b+c就行了, a,b,c让用户输入,比如用inputbox
      

  4.   


    晕~,用eval()几行就搞定了,哪里还要用到API。呵呵''引用了Script Control 1.0组件
      Dim e As New ScriptControl 
      Text1 = "1+3+5*3"
      e.Language = "vbscript"
      Text2 = e.Eval(Text1)
      

  5.   

    用过一个类模块,PSC上的,感觉还不错,分享一下:'Class Math
    Option ExplicitPublic Function Pi() As Double
        Pi = 3.14159265358979
    End FunctionPublic Function Sec(ByVal Radians As Double) As Double
        Dim Cosine As Double
      
        Cosine = Cos(Radians)
        If Abs(Cosine) <= 0.001 Then
            Sec = 9999.999999
        Else
            Sec = 1 / Cosine
        End If
    End FunctionPublic Function Csc(ByVal Radians As Double) As Double
        Dim Sine As Double    Sine = Sin(Radians)
        If Abs(Sine) <= 0.001 Then
            Csc = 9999.999999
        Else
            Csc = 1 / Sine
        End If
    End FunctionPublic Function Cot(ByVal Radians As Double) As Double
        Dim Sine As Double    Sine = Sin(Radians)
        If Abs(Sine) <= 0.001 Then
            Cot = 9999.999999
        Else
            Cot = Cos(Radians) / Sine
        End If
        
    End FunctionPublic Function Pow(base As Double, expon As Double) As Double
        Pow = Exp(expon * Log(base))
    End FunctionPublic Function Add(ByVal x As Double, ByVal y As Double)
        Add = x + y
    End FunctionPublic Function Multiply(ByVal x As Double, ByVal y As Double)
        Multiply = x * y
    End FunctionPublic Function Division(ByVal x As Double, ByVal y As Double)
        Division = x / y
    End FunctionPublic Function Subtract(ByVal x As Double, ByVal y As Double)
        Subtract = x - y
    End Function
      

  6.   

    表达式计算,条条大道通罗马,Script Control 1.0组件很简洁~~