VBA – 在Excel中执行string作为命令

在过去的30分钟内,我试图在VBA中执行一个string作为命令。 该命令是这样的,它运行正常:

activesheet.chb_g_ba1.visible = true 

我试图做的是设置“chb_g_ba1”作为variables,因为有“chb_g_ba2”,“chb_g_ba3”等等。

我到目前为止尝试过的东西 – 例如:

 dim l_counter as long: l_counter = 1 Evaluate (CStr("me.chb_g_ba" & l_counter & ".visible = true")) 

甚至是Eval

 Eval (CStr("me.chb_g_ba" & l_counter & ".visible = true")) 

Eval是MS Access VBA中的一个函数,但显然它不在Excel中。 几乎我的问题是非常相似的这个: VBA如何运行一个string作为一行代码 ,但它是为Excel,而不是为Access。

所以,任何想法都欢迎! 🙂

感谢培生软件咨询

有办法做到这一点,但我们必须dynamic地添加一个新的模块与所需的代码,并在完成时删除。

参考:Microsoft Visual Basic for Applications扩展性5.3

 Sub test() Set VBComp = ThisWorkbook.VBProject.VBComponents.Add(vbext_ct_StdModule) VBComp.Name = "NewModule" Set VBCodeMod = ThisWorkbook.VBProject.VBComponents("NewModule").CodeModule Dim l_counter As Long l_counter = 1 With VBCodeMod LineNum = .CountOfLines + 1 .InsertLines LineNum, _ "Sub MyNewProcedure()" & Chr(13) & "UserForm1.chb_g_ba" & l_counter & ".Visible = True" & Chr(13) & "End Sub" End With 'run the new module Application.Run "MyNewProcedure" UserForm1.Show 'Delete the created module ThisWorkbook.VBProject.VBComponents.Remove VBComp End Sub