3个回答
展开全部
方法一:API函数
这是VBS的函数
方法二:自己写函数
Private Function Eval(ByVal String As String, Optional KH As Long) As Double
'KH你不用理他,是堆栈参数,自己调用
Dim i As Long,j As Long,k as long, l as Long,m as Long,n as Long, o As Long
If Ismissing(KH) Then '以下为找括号,j为第几个括号内,k为最大括号数
For i = 1 to Len(String)
Select Case Mid(String,i,1)
Case "("
j=j+1
case ")"
j=j-1
end select
if j<0 then '当前右括号大于左括号
exit function
elseif j>k then
k=j
end if
next i
if k<>0 then exit function '左右括号数量不等
Eval=Eval(String,k) '调用自身
exit function
end if
For i = 1 to Len(String) '开始计算,找到最里层括号
select Case Mid(String,i,1)
case "("
j=j+1
case ")"
j=j-1
end select
If j=KH Then '最里层括号
For k = i+1 To Len(String) '找对应括号
If Mid(String,k,1)=")" then '找到最里层括号
l=k 'l为最里层右括号
exit for
end if
next i
End If
For m = j + 1 To l - 1 '幂运算^
if mid(String,m,1) = "^" Then
for n = m-1 to j+1
if not isnumeric(n) then exit for
Next n
o=n
'……………………………………………………剩下的我还写不出来,等我几天
end function
方法三:看蚂蚁的回答
方法四:自己引用
展开全部
Function Eval(ByVal Expressions As String) As String '文本运算vbs
Dim Mssc As Object
Set Mssc = CreateObject("MSScriptControl.ScriptControl")
Mssc.Language = "vbscript"
On Error GoTo EvalErr
Eval = Mssc.Eval(Expressions)
Exit Function
EvalErr:
Exit Function
End Function
‘调用:例如:Eval(Text1)
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
result=1+1
me.label1.caption="1+1"&resultv即可。
me.label1.caption="1+1"&resultv即可。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询