vb中是否有让算式执行的函数?高人救俺

junsisi 2003-12-03 05:15:10

在vb里面有什么函数能让一个算式进行计算
比如我有一个变量
a="(" + sp1 + "-" + sp2 + ")" + "*" + sp3

我想msgbox(a),显示(sp1-sp2)*sp3的值
应该怎么写
在asp中有一个execute的函数可以实现,不知道vb中有没有,要是没有,那应该如何实现?
...全文
73 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
junsisi 2003-12-04
  • 打赏
  • 举报
回复
我这是个循环列出几个数通过+-*/()组成的各种算式的值
用列举不现实,因为算式太多了~

另外:shwen兄弟,script control 中AddCode能不能加入符号啊
northwolves 2003-12-04
  • 打赏
  • 举报
回复
可以列举所有情况,如:
if a=a="("+str1+++str2+")"+*+str3 then b=(val(str1)+val(str2))* val(str3)
if a=a="("+str1+-+str2+")"+*+str3 then b=(val(str1)-val(str2))* val(str3)
junsisi 2003-12-04
  • 打赏
  • 举报
回复
各位,a是一个字符串变量
a="("+str1+op1+str2+")"+op2+str3

但这个字符串变量里面的字符串实际上是个算式,有什么法子能让a执行吗?
snowflake310 2003-12-03
  • 打赏
  • 举报
回复
学习。
northwolves 2003-12-03
  • 打赏
  • 举报
回复
a=(val(str1)+val(str2))* val(str3)
msgbox a
0101314f 2003-12-03
  • 打赏
  • 举报
回复
自己编写一个引擎。
cjpvvv@yahoo.com.cn
jpinglee 2003-12-03
  • 打赏
  • 举报
回复
用栈来模拟!具体的看看数据结构吧
junsisi 2003-12-03
  • 打赏
  • 举报
回复
我在文本框中输入3个数,然后赋给三个变量,然后按照+-*/()计算其各种形式时的值
不是让用户输入表达式的~
SoHo_Andy 2003-12-03
  • 打赏
  • 举报
回复
你的文本框中输入(sp1-sp2)*sp3

在程序中给三个变量赋值
然后
ExecuteLine "msgbox " & Text1.Text
就有结果了

就是这个意思
缺点是没有返回值,你的要求还是达到了的


junsisi 2003-12-03
  • 打赏
  • 举报
回复
SoHo_Andy在写啥俺看不懂,也看不明白~~
shwen兄弟的法子看起来行,但跟俺的不太适用啊~
俺那个是这样的
op1="+"
op2="*"
str1=1
str2=2
str3=3
我希望a的值=str1+str2的和*str3
所以
a="("+str1+op1+str2+")"+op2+str3

这个,怎么计算得出a的值
ssm1226 2003-12-03
  • 打赏
  • 举报
回复
execute "a=(" & sp1 & "-" & sp2 & ")" & "*" & sp3
nik_Amis 2003-12-03
  • 打赏
  • 举报
回复
引用script control typelib 1.0
shwen 2003-12-03
  • 打赏
  • 举报
回复
VB 中没有,不过可以用 Script 控件,在 Script 中执行。
例如
Me.ScriptControl1.AddCode "sp1=3"
Me.ScriptControl1.AddCode "sp2=1"
Me.ScriptControl1.AddCode "sp3=4"
MsgBox Me.ScriptControl1.Eval("(sp1-sp2)*sp3")
SoHo_Andy 2003-12-03
  • 打赏
  • 举报
回复
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

Public 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 X As Long, Y As Long"
ExecuteLine "x = 2"
ExecuteLine "y = 3"
ExecuteLine "msgbox " & Text1.Text
End Sub

Private Sub Form_Load()
Text1.Text = "x+y"
End Sub

7,759

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧