注册 登录
编程论坛 VB6论坛

自动计算文本框里的值

yuk_yu 发布于 2015-04-17 15:44, 859 次点击
我有个文本框,输入1*2+4*5自动得到结果显示在Label1上结果为22
6 回复
#2
lianyicq2015-04-17 16:05
可以借用VBS. 在网上找了一现成的
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

Private Function ExecuteLine(sCode As String, Optional fCheckOnly As Boolean) As Boolean
ExecuteLine = EbExecuteLine(StrPtr(sCode), 0&, 0&, Abs(fCheckOnly)) = 0
End Function

Private Function calc() As String
ExecuteLine "dim x as double"
ExecuteLine "x= " & Text1.Text
ExecuteLine "clipboard.settext x"
Label1.Caption = Clipboard.GetText
End Function

Private Sub Command1_Click()
calc
End Sub
#3
yuk_yu2015-04-21 09:23
回复 2楼 lianyicq
谢谢回复,完美!
#4
yuk_yu2015-04-21 10:11
回复 2楼 lianyicq
为何封装后提示欠缺VBA6.dll,要怎么引用或注册!!
#5
yuk_yu2015-04-21 10:40
回复 3楼 yuk_yu
能否用其他办法解决?


Dim Str As String   '用来存储表达式  
Dim Rst As String  ’用来存储结果 
Dim SCtl As Object   
Set SCtl = CreateObject("MSScriptControl.ScriptControl") ’创建并存储ScriptControl对象 
Str = txbExpression  ’将表达式的值传递给Str 
SCtl.Language = "VBScript" '设置脚本语言为 
VBScriptRst = SCtl.Eval(Str)   '计算表达式的值 
txbValue = Rst '输出最终结果


为何还是不行?
#6
lianyicq2015-04-21 11:38
回复 4楼 yuk_yu
嵌入了VB代码的语句,不可能脱离了VB开发环境来运行。要生成EXE再执行,只能另外想办法了。
#7
lianyicq2015-04-21 12:17
回复 5楼 yuk_yu
可以借用excel完成,编译为exe也没问题.不过要有临时EXCEL文件
程序代码:
Private Sub Command1_Click()
Dim EXAPP As Excel.Application
Dim WB As Excel.Workbook
Dim sht As Excel.Worksheet
Dim cz As String
Set EXAPP = CreateObject("excel.application")
Set WB = EXAPP.Workbooks.Open("c:\test.xlsx")
Set sht = WB.Worksheets("Sheet1")
sht.cells(5, 1) = Text1.Text
sht.cells(5, 2) = "=" & Text1.Text
WB.Save
Label1.Caption = sht.cells(5, 2)
WB.Close
Set sht = Nothing
Set WB = Nothing
Set EXAPP = Nothing
End Sub


1