VBA执行存储在Cells中的代码 - 是否可能?

时间:2017-09-06 09:31:49

标签: excel excel-vba vba

是否可以执行在特定excel单元格中编写的代码?

例如:在Range("A1")text -> debug.print("Test")。我需要一些方法来从VBA代码执行它。

有可能吗?

4 个答案:

答案 0 :(得分:3)

首先,使用this answer确保以编程方式访问VBA模型。然后,使用this method为位于工作表单元格中的简单命令创建字符串解析器。这应该足以让你前进。

<强>演示:

enter image description here

Option Explicit

Sub test()
    Dim strCode As String
    strCode = Sheet1.Range("A1").Text
    StringExecute strCode
End Sub

Sub StringExecute(s As String) 
    ' Credits to A.S.H., see https://stackoverflow.com/questions/43216390/how-to-run-a-string-as-a-command-in-vba
    Dim vbComp As Object
    Set vbComp = ThisWorkbook.VBProject.VBComponents.Add(1)
    vbComp.CodeModule.AddFromString "Sub foo()" & vbCrLf & s & vbCrLf & "End Sub"
    Application.Run vbComp.Name & ".foo"
    ThisWorkbook.VBProject.VBComponents.Remove vbComp
End Sub

答案 1 :(得分:0)

没有。您无法在工作表中存储代码。但是,您可以在工作表单元格中存储过程的名称,然后使用Application.Run

调用该过程

答案 2 :(得分:0)

简答:

您只能运行VBA编辑器中的代码。因此,无法直接从单元格运行代码。

但是......
但你可以做的(作为一种解决方法)是编写一个过程,从该单元格中提取VBA代码并将其包含在一个模块中,然后运行该代码。

然而,即使这是可能的,这对于专业用户来说也是一项任务,不建议初学者使用(你应该知道你在这里做了什么)。

然而,如果您想了解如何将程序/功能添加到VBA编辑器中,请查看Programming The VBA Editor

答案 3 :(得分:0)

您可以轻松实现目标的最近方法是使用VBA用户定义函数。这些可以通过工作表公式以与本机Excel函数相同的方式调用。

但与VBA子程序相比,它们有局限性 - 主要原因是它们只能将信息返回到它们占用的单元格。