如何用VB运行过程中动态执行代码?

如窗体上有个文本框,在文本框中输入“msgbox"HelloWorld!"”就会出现提示框。等,只需实现简单的、最基本的命令即可。其中文本框中的代码可用VB语言书写,然后... 如窗体上有个文本框,在文本框中输入“msgbox"Hello World!" ” 就会出现提示框。等,只需实现简单的、最基本的命令即可。
其中文本框中的代码可用VB语言书写,然后用我编的程序去执行它。请高手教我如何实现。
展开
 我来答
闪星2
推荐于2017-09-28 · TA获得超过3006个赞
知道大有可为答主
回答量:2898
采纳率:58%
帮助的人:1044万
展开全部

可以用VBScript和CallByName函数结合

比如说你要执行msgbox "Hello World!" 这样的语句就这样

Private Sub Command1_Click()
    Set vbs = CreateObject("MSScriptControl.ScriptControl")
    vbs.Language = "VBScript"
    vbs.ExecuteStatement (Text1.Text)
End Sub

假如你要执行“Text1.top=0”的话就用CallByName。

要说明的是:

  1. VB6.0里面没有CObj函数,所以不能直接用这个函数把字符串转换成对象(object);

  2. 既然你要执行Text1.top=0,那么你的窗体上必须得有一个name属性为Text1的控件,我们可以通过遍历窗体控件的方法得到这个得到这个控件。这里给出一个demo

Option Explicit

Private Sub Command1_Click()
    Dim obj As Object
    Dim ObjName As String
    Dim ObjProperty As String
    Dim ObjValue As Variant
    
    '获取控件名,控件属性,控件值
    ObjName = Split(Text1.Text, ".")(0)
    ObjProperty = Split(Split(Text1.Text, ".")(1), "=")(0)
    ObjValue = Split(Split(Text1.Text, ".")(1), "=")(1)
    
    '遍历窗体控件,然后运用控件的属性
    'VbLet——设置属性
    For Each obj In Me.Controls
        If obj.Name = ObjName Then
            CallByName obj, ObjProperty, VbLet, ObjValue
            Exit For
        End If
    Next
End Sub

效果(执行前):

效果(执行后):

效果(执行前):

效果(执行后):

至于应该用哪个,你可以简单做下判断,比如找下要执行的字符串里面有没有“.”等等,,,自己变通下

百度网友174eea2b
推荐于2017-10-03 · TA获得超过221个赞
知道小有建树答主
回答量:129
采纳率:100%
帮助的人:105万
展开全部
呵呵,我以前也遇到过这个问题,找了很久,终于找到了,跟你分享一下吧:

在窗体上添加一个按钮command1,和一个文本框text1。输入代码:

Private Sub Command1_Click()
Set vbs = CreateObject("MSScriptControl.ScriptControl")
vbs.Language = "VBScript"
vbs.ExecuteStatement (Text1.Text)
End Sub

在文本框中输入要执行的代码,如楼主要求的
msgbox"Hello World!"
点击command1,看看执行效果。
追问
但是我在文本框中输入“Text1.top=0”时却显示“缺少对象"Text1"”
追答
这个借用的是vbs脚本的execute功能,vbs不支持窗体、控件,所以无法对窗体或控件进行操作。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
zs5178
2012-03-10 · 超过17用户采纳过TA的回答
知道答主
回答量:32
采纳率:0%
帮助的人:47.9万
展开全部
你提的这个不是个简单的问题,如你所说,如果只是要出个提示框那好做。但要实现VB的所有功能指令很难——那得另行编造一个VB了,你说的这种需求其实就是VB的编译原理。
如果要实现简单的演示功能,首先要有一个数据库,将VB的基本指令的关键字都录入,当你输入一条指令后,使用字符串查找功能看是哪一个指令,再检查关键字是否齐全,然后将关键字和参数拆分,再将参数传递给程序内已写好的模块内调用相应的函数或指令。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式