就是类似实现js里面的eval功能的函数比如:
dim pp as long 
dim ss as stringpp=95
ss="pp+5"
debug.print XXXX(ss)要出来100,

解决方案 »

  1.   

    Option ExplicitPrivate Declare Function EbExecuteLine Lib "vba6.dll" (ByVal pStringToExec As Long, ByVal Unknownn1 As Long, ByVal Unknownn2 As Long, ByVal fCheckOnly As Long) As LongPublic 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 "Dim pp As Long"
    ExecuteLine "Dim ss As long"
    ExecuteLine "pp=95"
    ExecuteLine "ss = pp+5"
    ExecuteLine "debug.print ss"
    End Sub
      

  2.   

    喔,你那个ss为String,那么第二个ExcuteLine句为:
    ExecuteLine "Dim ss As String"
      

  3.   

    好像不对哦。
    ss=pp+5 去了。
    应该是ss="pp+5"才是啊。 ss的字串值本是个表达式,而我想得到这个表达式的值。
      

  4.   

    ss字符型,pp+5 LONG型,直接赋值系统隐式转换为字符"100"
      

  5.   

    dim ss as String
    '可以这样赋值
    ss = 1
      

  6.   

    谢谢!!已经从ExecuteLine 找到线索并找到正解。
      

  7.   

    这是找到的答案
    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
    Function ReturnCalc(ByVal x As String)As String
      Dim Result
      ExecuteLine "dim x as double"
      ExecuteLine "x= " & x
      ExecuteLine "clipboard.settext x"
      Result = Clipboard.GetText
      ReturnCalc = Cstr(Result)
      Set result = Nothing
    End Function