在VB中有没有计算字符串表达式,然后得出结果的属性或函数

LIZHIztt 2005-05-17 06:46:46
就好象javascript中的eval
...全文
134 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
TechnoFantasy 2005-05-17
  • 打赏
  • 举报
回复
> 使用Script Control,首先在工程中加入Microsoft Script Control控件,然后在工程
> 中加入一个Class Module,在Class Module只加入一行代码:
>
> Public k1 As Integer
>
> 然后在Form1中加入一个CommandButton按钮和一个TextBox控件,然后添加如下代码:
>
> Private Sub Command1_Click()
> Dim a(1)
> Dim shar As New Class1
>
> ScriptControl1.AddObject "sh", shar
> ScriptControl1.AddCode "Function Main(x)" & vbCrLf & "kk=" & Text1.Text
> & vbCrLf & "sh.k1 = kk " & vbCrLf & "End Function"
>
> ScriptControl1.Run "main", a
> MsgBox "结果等于:" & shar.k1, , "运算结果"
> End Sub
>
>
> Private Sub Form_Load()
> Text1.Text = "3+2*1"
> End Sub
>
> 点击Command1,程序就会运算Text1中的算式并显示结果。
DooDu 2005-05-17
  • 打赏
  • 举报
回复
两个方法都可以
DooDu 2005-05-17
  • 打赏
  • 举报
回复
1。
引用“Microsoft Script Control 1.0”
Private Sub Command1_Click()
Dim VBEval As New ScriptControl
Dim Result As String
On Error GoTo E
VBEval.Language = "vbscript"
Result = VBEval.Eval(Text1.Text)
MsgBox Text1.Text & "=" & Result
Exit Sub
E:
MsgBox "表达式错误,检查是否输入了非法字符!"
End Sub

2。

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

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


Sub calc(ByVal x As String)
Dim result
ExecuteLine "dim x as double"
ExecuteLine "x= " & x
ExecuteLine "clipboard.settext x"
result = Clipboard.GetText
MsgBox x & "=" & result
Set result = Nothing
End Sub

Private Sub Command1_Click()
calc Text1
End Sub

Private Sub Form_Load()
Text1.Text = "(1+(2*((3-2)-4)))/2"
End Sub

2,464

社区成员

发帖
与我相关
我的任务
社区描述
VBA(Visual Basic for Applications)是Visual Basic的一种宏语言,是在其桌面应用程序中执行通用的自动化(OLE)任务的编程语言。
社区管理员
  • VBA
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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