将字符串名称作为对象求值,其中名称在Excel VBA中运行时动态给定

将字符串名称作为对象求值,其中名称在Excel VBA中运行时动态给定,vba,excel,Vba,Excel,我有一个UserForm,用户将在其中选中复选框,该复选框将被复制到Excel工作表中。打开UserForm时,它将检查Excel工作表中的数据,当单击UserForm上的应用按钮时,UserForm数据将放置在Excel工作表中 复选框对象将类似于- UserFrom Name : Config CheckBox Names : B1M101, B1M102, B1M103 (will be supplied dyanmically) 这是我的工作(不工作)—— 因此,我试图将Excel工作

我有一个UserForm,用户将在其中选中复选框,该复选框将被复制到Excel工作表中。打开UserForm时,它将检查Excel工作表中的数据,当单击UserForm上的应用按钮时,UserForm数据将放置在Excel工作表中

复选框对象将类似于-

UserFrom Name : Config
CheckBox Names : B1M101, B1M102, B1M103 (will be supplied dyanmically)
这是我的工作(不工作)——

因此,我试图将Excel工作表“Internal”中的值复制到UserForm中的复选框中。但是当我执行这段代码时,我得到了编译器错误:执行过程中出现了无效的限定符错误-

BeckDIE.Enabled = ExIntCellE.Value
BeckDIV.Value = ExIntCellV.Value
如何将Excel工作表单元格值作为字符串分配给动态创建的复选框ObjectName

我尝试过执行许多表单,比如Application.Evaluate或Eval函数,只执行字符串名作为对象或全名-

Application.Evaluate(BeckDIE).Enabled = False
Eval(BeckDIE).Enabled = False
Application.Evaluate(BeckDIE + ".Enabled") = False
Eval(BeckDIE + ".Enabled") = False

但是,没有运气。它给出了错误。

正如@PEH所建议的,以下代码对我有效-

For i2 = 1 To 99
        ModuleN = "B1M10"+i2
        BeckDIE = ModuleN
        BeckDIV = ModuleN
        ExIntCellE = Sheets("Internal").Cells(RowStart + i2, EnableModify).Value
        ExIntCellV = Sheets("Internal").Cells(RowStart + i2, ValueModify).Value
        Config.Controls(BeckDIE).Enabled = ExIntCellE
        Config.Controls(BeckDIV).Value = ExIntCellV
Next i2

你的问题是什么?你一个也没问另外(很抱歉,但我不得不说)“不工作”是您可以使用的最糟糕的错误描述。请始终包括您得到的错误以及在哪一行中。如果您没有收到错误,请告诉您的代码实际执行的操作和您期望它执行的操作。@Pᴇʜ,对不起,我还没有完成这个问题,现在我已经更新了在工作表上创建的复选框是什么?然后,您可以使用类似于
工作表(“Sheet1”).Shapes(“CheckBoxName”).OLEFormat.Object.Caption=“aaa”
。如果复选框位于用户窗体上,请使用
控件(“CheckBox1”).Caption
通过其名称访问它:例如
控件(BeckDIE)。Caption
@Pᴇʜ否,复选框是在UserFormcheck上创建的。请检查我评论的第二部分。
For i2 = 1 To 99
        ModuleN = "B1M10"+i2
        BeckDIE = ModuleN
        BeckDIV = ModuleN
        ExIntCellE = Sheets("Internal").Cells(RowStart + i2, EnableModify).Value
        ExIntCellV = Sheets("Internal").Cells(RowStart + i2, ValueModify).Value
        Config.Controls(BeckDIE).Enabled = ExIntCellE
        Config.Controls(BeckDIV).Value = ExIntCellV
Next i2