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