VB中文本内公式的计算问题

在一个文本框中输入计算公式,点击计算按纽,再另一个文本框中输出结果?

自己动手编了个函数过程,可以进行简单的四则混合运算。是习作,请多提宝贵意见。 Function tran(stra As String) As String
'Function tran() 的功能是将一个包含有
'算术四则运算符号表达式的字符串(下称“源字符串”),
'转换为算术表达式并计算出结果
'并将计算结果转换为字符串后返回
'例:tran("1+2-3*4/5") 返回 ".6"
'Function tran() 处理的字符串必须是
'经过检验合法的算术表达式
'否则会出错
Dim k As Integer '存放源字符串中运算符个数
Dim a(100) As String '存放各运算符号
Dim b(100) As Double '存放中间结果
Dim c(100) As String '存放各操作数
Dim d(100) As Integer '存放各运算符在源字符串中的位置
Dim tt As Double
Dim t As String
Dim l As Integer'==================================================================
'查找源字符串中运算符个数,并将各运算符存入 a 数组,'将运算符在源字符串中的位置存入 d 数组
k = 0
For i = 1 To Len(stra)
t = Mid$(stra, i, 1)
If t = "+" Or t = "-" Or t = "×" Or t = "÷" Or t = "+" Or t = "-" Or t = "*" Or t = "/" Then
k = k + 1
a(k) = t
d(k) = i
End If
Next
'===================================================================
d(0) = 0 '虚拟的运算符位置
d(k + 1) = Int(Len(stra) + 1) '便于以下循环取数
'=====================================================
'将各操作数存入c 数组
For i = 1 To k + 1
c(i) = Mid$(stra, d(i - 1) + 1, d(i) - d(i - 1) - 1)
'两个运算中间的字符都作为操作数处理
Next
'=====================================================
'计算分两步,先处理运算符,后计算结果
'处理运算符,以 b 数组存放中间结果
l = 1
b(1) = Val(c(1))For i = 1 To k
If a(i) = "+" Or a(i) = "+" Then
l = l + 1
b(l) = Val(c(i + 1)) '加法照抄
End If
If a(i) = "-" Or a(i) = "-" Then
l = l + 1
b(l) = -Val(c(i + 1)) '减法取负
End If
If a(i) = "×" Or a(i) = "*" Then
b(l) = b(l) * Val(c(i + 1)) '乘法取中间结果
End If
If a(i) = "÷" Or a(i) = "/" Then
If Val(c(i + 1)) = 0 Then tran = "错误!——被零除": GoTo 10b(l) = b(l) / Val(c(i + 1)) '除法取中间结果
End If
Next
'=============================================
tt = 0
For i = 1 To l
tt = tt + b(i) '对数组累加求和,即得结果
Nexttran = Trim$(Str$(tt)) '转换为字符串10: End Function 使用的时候,把上面的代码复制粘贴到“通用”部分在计算按扭的单击事件过程中添加代码:Text2.Text = tran(Text1.Text)要求Text1里面只能是一个合法的算术表达式,不能有多余字符。
温馨提示:内容为网友见解,仅供参考
第1个回答  2013-10-25
如果公式是1+2=形式,则:Dim a As Integer
Private Sub Command1_Click()
a = Val(Left(Text1.Text, 1)) + Val(Right(Text1.Text, 2))
Text2.Text = a
End Sub如果公式是1+2形式,则:Dim a As Integer
Private Sub Command1_Click()
a = Val(Left(Text1.Text, 1)) + Val(Right(Text1.Text, 1))
Text2.Text = a
End Sub本回答被网友采纳

VB中文本内公式的计算问题
如果公式是1+2=形式,则:Dim a As Integer Private Sub Command1_Click()a = Val(Left(Text1.Text, 1)) + Val(Right(Text1.Text, 2))Text2.Text = a End Sub如果公式是1+2形式,则:Dim a As Integer Private Sub Command1_Click()a = Val(Left(Text1.Text, 1)) + Val(Right...

VB中,我Text文本框输入一个数学公式,怎么才能提到它的结果?
手机回答不多打字我就给你个思路吧!先把公式赋给数组然后用for便历数组然后用selectcase判断是+就用前一个元素于后一个相加然后赋给变量以此类推这个写法不判断算数优先级

VB6中text1中写入计算公式"=5*5+2*2",失去焦点后,text1中会显示结果...
总的来说,就是把这个算式一分为二(分成5*5和2*2),然后在这两个片段上再继续分(分成5、5、2、2),直到分不了为止,这时就剩一个纯数值了(如果不是,那就是不可识别的符号或运算符,需要给出错误消息)。我没有参考一些已有的算法,所以暂时给它起名‘二分法’吧:程序是使用递归完成的...

vb中公式问题 如 I=textbox1 R=textbox2 N=textbox3 textbox4=(1+i...
I=cint(textbox1.text)

...汉字或字母且有中括号(括号内有文字或数字)的计算式进行计算?_百度...
c() = Split(cs(6), ",") '拆分出的运算符保存在数组c()中 '根据运算符,进行公式的计算 jg = 0 For j = 0 To UBound(c()) - 1 If c(j) = "+" And c(j + 1) = "+" Then jg = jg + Val(b(j)) + Val(b(j + 1))End If If c(j) = "+" And c(j + 1...

VB中怎样使文本1中输入的数学公式运算
并且单击工程-〉部件,在框中加入“Microsoft Script Control”,添加完以后在工具箱找到它,放一个在form中即可使用 Private Sub Command1_Click()On Error GoTo errhandler ScriptControl1.Language = "vbscript"Text2 = ScriptControl1.Eval(Text1)Exit Sub errhandler: MsgBox "出错了..."End Sub ...

vb中,怎么写代码,让程序能够识别我在text里写的一个数学公式,并且按照...
'引用 Microsoft Script Control 1.0 '应该是你说的,但你说的3x 这样的公式 要写成 3*x 了,如果不行,另找好的代码 ,呵!但怎么用你也可以学一下 ScriptControl Option Explicit Private Sub Command1_Click()On Error GoTo E Dim ScriptControl1 As New ScriptControl Dim strVBS As String S...

在vb,text1文本框作为公式编辑框(25+225+1800+225+25)*(9+16+30+810...
可以利用vb调用excel 解决问题,具体如下:a)从VB5“工程”菜单中选择“引用”;b) 在“引用”对话框中选择Excel类型库:"Microsoft Excel9.0 Object Library";c)单击左边小方框,使之出现“√”符号;d)按“确定”退出。注:要想在VB应用程序中调用Excel,你的计算机系统中必须安装Excel。e)...

vb题.输入x值,按下列公式计算cos(x)。精度要求7位有效数字,最后一项<...
在文本框中输入x的值,然后点击窗体运行:Function jc(n As Integer) As DoubleIf jc = 0 Then jc = nIf n > 2 Then jc = jc * jc(n - 1)End Function Private Sub Form_Click()Dim x As Single, cosX As Single, n As Integerx = Val(Text1.Text)n = 1cosX = 1Do Until x...

VB 两个TEXTbox计算溢出问题,求大神帮看看
你这公式本身存在一个问题,就是如果历史气温刚好为0度,那么就会出现“除数为0”的错误。所以下面的代码将会把历史气温为0度的情况也排除在外:Private Sub Command2_Click()If Trim(Text1) = "" Or Trim(Text2) = "" Then MsgBox "气温数字不能为空!"Else ssqw = Val(Text2)lsqw = ...

相似回答