有没有办法将字符串转换为可执行的代码行?
类似的东西:
Dim Line1 as String
Line1 = "MsgBox (""Hello"")"
Execute Line1
导致弹出框显示Hello。
我正在做的是从文本文件中拉出线条。我可以拉出作为表单控件名称的行,并使用它们对这些表单控件执行操作,但我想更进一步并执行行。 我已经看到声称这会起作用:
Application.Run Line1
或使变量成为数组并将其存储在元素1中,例如并使用
Application.Run Line1(1)
但它对我不起作用。
好的,写这篇文章时我也一直在试验。我找到了
Eval (Line1)
当Line1是一个消息框时,将起作用,但是当它类似于:
时,它不会起作用line1 = "DoCmd.OpenForm ""form1"""
任何提示都将不胜感激。
由于
答案 0 :(得分:3)
你可以使用,
Eval("DoCmd.OpenForm(""form1"")")
您必须确保包含的任何功能都使用括号。 进一步参考, http://msdn.microsoft.com/en-us/library/office/aa172212(v=office.11).aspx
答案 1 :(得分:1)
Visual Basic是一种编译器语言,因此不支持在运行时执行人类可读代码的能力。在程序第一次运行之前,必须首先编译用VBA编写的所有代码。 但是,SQL是一种解释器语言,可以传递它将逐行执行的代码。您还可以在程序运行时从其他源获取变量的内容,您只是在程序运行时无法构建字符串,然后直接在VBA中执行它。
答案 2 :(得分:0)
这不完全是我所要求的,我最终走向了一个稍微不同的方向,但这就是我最终做的事情,它可能很容易改变,以更贴近我的问题。我实际上从外部文本文件中取出了一行文本并将它们插入到一行代码中。我在这个例子中做的只是隐藏列,外部文本文件是列名列表。 (弄清楚如何输出那也很有趣)
Open "C:\UserList.txt" For Input As #TextFile
While Not EOF(TextFile)
Line Input #TextFile, TextLine
Screen.ActiveDatasheet.Controls(TextLine).ColumnHidden = True
Wend
答案 3 :(得分:0)
您不必经历极端的情况……因为您实际上并没有动态执行代码。 Controls()属性接受测试字符串,因此您可以使用任何源,包括更简单的表或数组。
与您最初的示例一样,可以完成同样的事情:
Dim Line1 as String
Line1 = "Hello"
MsgBox Line1