gpt4 book ai didi

excel - 可以将代码从单元格写入 VBA 吗?

转载 作者:行者123 更新时间:2023-12-04 21:42:37 27 4
gpt4 key购买 nike

我想知道如何在 VBA 中调用一些东西来在运行时编写它的代码?所以我的意思是如果我有 文字 在 A1 中阅读:

sub Write()
Call OtherScript
End Sub
所以这又是单元格内的文本,而不是 VBA 脚本中的文本。然后在脚本运行时调用“A1”,A1 中的代码通过 VBA 运行,而无需实际将其放入其中。
这显然不是一个真正的代码,我真的只是想知道这是否可能。一位帮助我学习编码并帮助我完成大量 VBA 的 friend 说,他不知道这将如何工作,所以我将其发布在这里以查看是否可能。

最佳答案

请尝试以下代码。在运行它之前,在一个单元格中写入:

sub WriteSomething() 
Call OtherScript
End Sub
您不能创建名为 Write 的函数/子程序因为这个词是非法的,在 VBA 中有其他含义。
并在下一个单元格中(在同一行):
sub OtherScript()
MsgBox "Hello!"
End Sub
我用了“K2”。也使用它,或者从代码中调整范围。您还应该有一个 Module3标准模块。请用您的 vbProject 中现有的模块名称更新模块名称。 .无论如何,代码也可以创建模块......
复制下一个代码并运行它:
Sub write_Run_Subs()
'It needs a reference to 'Microsoft Visual Basic For Applications Extensibility x.x'
Dim vbProj As VBProject, objMod As VBComponent, mdlName As String
Dim rngStr As Range, strSub1 As String, strSub2 As String

Set rngStr = Range("K2")
strSub1 = rngStr.value
strSub2 = rngStr.Offset(0, 1).value
mdlName = "Module3" 'of course, it have to exist in ThisWorkbook vbProject
Set vbProj = ThisWorkbook.VBProject
Set objMod = vbProj.VBComponents(mdlName)
objMod.CodeModule.AddFromString strSub1
objMod.CodeModule.AddFromString strSub2

Application.Run mdlName & ".WriteSomething"
End Sub
它只是一个没有太多错误处理的简单代码,但它应该可以工作......如果你运行它两次,它会插入两个这样的子,如果不初步检查它们的存在。
如果添加必要的引用看起来很复杂,请先运行以下代码,它将添加它:
Sub addExtenssibilityReference()
'Add a reference to 'Microsoft Visual Basic for Applications Extensibility 5.3':
ThisWorkbook.VBProject.References.AddFromGuid _
GUID:="{0002E157-0000-0000-C000-000000000046}", _
Major:=5, Minor:=3
End Sub

关于excel - 可以将代码从单元格写入 VBA 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72118552/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com