将字符串名称评估为在Excel VBA中运行时期间动态指定名称的对象

时间:2018-05-28 06:38:42

标签: excel vba excel-vba

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

CheckBox对象就像 -

UserFrom Name : Config
CheckBox Names : B1M101, B1M102, B1M103 (will be supplied dyanmically)

这是我的工作,(这不起作用) -

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

所以,我试图将Excel Sheet“Internal”中的值复制到UserForm中的CheckBoxs。但是,当我执行此代码时,我得到编译器错误:执行期间无效的限定符错误 -

BeckDIE.Enabled = ExIntCellE.Value
BeckDIV.Value = ExIntCellV.Value

如何将Excel工作表单元格值分配给动态创建的CheckBox ObjectName为字符串?

我试图通过仅执行字符串名称作为对象或整个名称来执行许多表单,如Application.Evaluate或Eval函数 -

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

但是,没有运气。这是错误的。

1 个答案:

答案 0 :(得分:1)

根据@PEH的建议,以下代码对我有用 -

conn.Open()
Using com As New SqlCommand("UPDATE table_addsub SET [product_stock]=[product_stock] + @qty2 WHERE [product_Id]=@Prod_Id", conn)
    com.Parameters.AddWithValue("@Prod_Id", Me.TextBox3.Text) // Product id        
    com.Parameters.AddWithValue("@qty2", Me.TextBox4.Text) //Qty to be add.
    com.ExecuteNonQuery()
    MessageBox.Show("Updated Successfully")
    LoadList()
End Using