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

作者&投稿:佟尝 (若有异议请与网页底部的电邮联系)
VB2010 怎样将文本框里的算式提取出来 然后计算用的什么代码~

添加加ScriptControl部件,用这个控件Eval方法来实现
如 Print ScriptControl1.Eval(Replace(Replace("1×2+3÷4+5", "×", "*"), "÷", "/"))
等价式为 Print ScriptControl1.Eval("1*2+3/4+5")
输出的是 7.75.
要注意 替换 × ÷ 等 非法运算符为VB可以识别的运算符 * / .

  无数个是不可以的。文本框有一个最大的字节数。但输出很多还是可以的。但总字符数不能超过32K。

  将文本框的MultiLine的属性设置为真(true),将ScrollBars属性设置为3-Both即可。

  这样文本框有流动条,也能自动换行,可以获得最大的容量。

自己动手编了个函数过程,可以进行简单的四则混合运算。是习作,请多提宝贵意见。 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+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 把文本型公式可以计算
答:Function JS(ByVal Expressions As String) As String Dim Mssc As Object Set Mssc = CreateObject("MSScriptControl.ScriptControl") Mssc.Language = "vbscript" On Error GoTo EvalErr JS = Mssc.Eval(Expressions) Exit FunctionEvalErr: Exit FunctionEnd FunctionPrivate Sub ...

vb 关于公式计算的问题。
答:dd="21*3+45/5+SLN(123,2,2)+2"是字符串,而且是没有计算的字符串,就是“21*3+45/5+SLN(123,2,2)+2”这一串,问题是在用eval的时候,SLN()是不能自动解析为函数的,并进行自动计算的,就是说,dd这个时候不是一个数值式的字符串,用eval当然会出错啦~~你这样做试试:bb=SLN(123...

VB关于文本框里写个公式,然后代入数字的问题?请看里面具体图片说明...
答:"a", a) str = Replace(str, "b", b) str = Replace(str, "c", c) str = Replace(str, "d", d) Result = SCtl.Eval(str) '计算表达式的值 Text6 = Result '输出最终结果 End Sub

VB公式计算出现的问题!
答:错误:If quyang = 1里边的DO循环少了句jishu = jishu + 1,汗,无限循环 改了这个如果还有问题,只能是你的输出有问题了 你的answerbox(cishu)是怎么写的呢?我自己测试的时候写了个answerbox(),测试成功,你可以参照一下 Dim answer(1 To 12) As Single 'answerbox的需要,把answer(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文本框输入一个数学公式,怎么才能提到它的结果?
答:手机回答不多打字我就给你个思路吧!先把公式赋给数组然后用for便历数组然后用selectcase判断是+就用前一个元素于后一个相加然后赋给变量以此类推这个写法不判断算数优先级

一个数学公式在VB中的实现问题
答:1.公式转换为Rc= A * V * ∑ {Tx*(1-Px)} ,以简化计算步骤 2.异常处理未详细写,根据需要自己补充 3.未做循环处理,只运行一次,可根据需要改为循环处理,但最好加一个退出控制字符,避免死循环 4.P值为小数输入,如30%,则输入0.3或.3,如认为输入效果不好,可自己更改 5.此为控制台...

vb,通过公式计算得到一个数值,怎样取到小数点后三位,并...
答:vb,通过公式计算得到一个数值,怎样取到小数点后三位,并...设你上面的E值要取三位小数点:【方法一】E = Round(Sqr((x1 - x11) * (x1 - x11) + (y1 - y11) * (y1 - y11)) / 10000,3)【方法二】E = Format(Sqr((x1 - x11) * (x1 - x11) + (y1 - y11) * (y1 - ...

...两个文本文件,然后将两个文本中的数据逐行按公式计算。
答:建一个Command1。公式如有错误,请楼主再说清楚点,或者把幂表示为乘积的形式。代码如下。=== Private Sub Command1_Click()Open "d:\1.txt" For Input As 1 Open "d:\2.txt" For Input As 2 Dim T As String, R As String Do While EOF(1) = False Line Input #1, T Line Inp...