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 如何读取WORD单元格中用于计算的公式?
答:首先,打开要计算的word表格文件!请点击输入图片描述 点击要进行计算的单元格,找到“表格工具”下“布局”选项卡 请点击输入图片描述 找到"FX公式”请点击输入图片描述 可以看到,计算求和,是sum函数,里面的left是参数,意思是计算左边的数的和 请点击输入图片描述 “确认”之后,就出现左边数字的和了...

vb列出10个数和10个数分别通过某公式运算,在文本框里列出所有可能_百度...
答:Private Function GetMinA(a() As Integer) As DoubleDim sum As DoubleDim n As IntegerDim Avg As Doublen = UBound(a)sum = 0For i = 0 To nsum = sum + a(i)Next iAvg = (sum / n) * 0.8Dim x() As DoubleDim co As Integerco = 0For i = 0 To nIf a(i) > Avg...

...单击计算Y按钮Command1时,按以下公式计算Y?
答:Dim a(1 To 50) As Integer Private Sub Command1_Click()x = Val(Text1)If x <= 0 Then y = -x Else y = Sqr(x)Label2.Caption = y End Sub Private Sub Form_Load()Me.Caption = "计算分段函数"Text1 = ""Label1.Caption = "请输入x"Label2.Caption = ""Command1.Caption...

如何在VB中输入圆的面积公式?
答:可以参考下面的代码:Private Sub Command1_Click()Dim p As Single Dim s As Single Dim r As Single p = 3.1415 '定义周长率的值 r = InputBox("请输入一个圆的半径", "输入", 0) '获取输入值 s = p * r ^ 2 '面积公式 c = 2 * p * r '周长公式 MsgBox ("圆的面积为:...

vb中如何计算以下公式
答:10+35000*0.01*sqr((1000000+数差*5000)/2000)10+35000*0.01*sqr((2700000+数差*95000)/2000)10+35000*0.01*sqr(数差*20000000/2000)

EXCEL中用VB公式计算的问题
答:后面单元格向下拉公式 2、就用你说的那个宏吧。先说说问题 第一段循环:有IF,但没有ENDIF对应 第二三四段循环,IF不能放到NEXT的后面,这些流程不能交叉的,只能有包含。FOR NEXT是一个流程,IF。。。END是一流程,流程之内只能用跳转跳出 如GOTO,EXIT FOR/DO等等 我帮你做了一个宏,你放进...

vb中语句x=23=28的运算结果是什么
答:理解算法的概念,初步学会顺序结构程序设计。重点:正确书写VB表达式。任务1 编程实现:输入圆的半径,能够计算出圆的周长和面积,并显示出来。一、设计算法 算法:算法是解决一个问题而采取的方法和步骤。1.键盘输入半径的值并将它放入变量r中。2.将π的值放入变量pi中 3.用公式计算出圆的周长2*pi*r...

VB编程:1使用公式e=1+1/1!+1/2!+1/3!+……求e的近似值,要求计算到最后...
答:1.include <stdio.h> include <math.h> double fact(double num){ if(num>1){ return num*fact(num-1);} else { return 1;} } int main(){ double i,sum;i=sum=0.0;while(1){ sum+=1/fact(i);i++;if(fact(i)>100000000){ break;} } printf("sum=%lf\n",sum);return...

各位大虾。。在excel中如何用vb编程计算乘法公式(命令按钮)
答:代码如下。=== Private Sub CommandButton1_Click()ActiveSheet.Range("A4").Value = ActiveSheet.Range("A1").Value * ActiveSheet.Range("A2").Value * ActiveSheet.Range("A3").Value End Sub 这样就不会出现公式了,只在你按按钮的时候计算。

为什么EXCEL公式计算的结果和VB中写的公式计算结果差异很大?
答:'VB中你怎么算出来是0.961155 的,你贴个代码来看看 Private Sub Form_Click()Dim B2#, B4#, D2#, K10#, a#, Aw Const PI# = 3.1415926 B2 = 12 B4 = 161 D2 = 20 K10 = 20.666667 a = D2 * PI / 180 Aw = K10 * PI / 180 MsgBox ((B2 + B4) / 2) * ((Cos...