我们在用户窗体上的Excel 2016 VBA应用程序中使用第三方ActiveX网格控件10Tec iGrid。我们需要通过动态生成的字符串名称检索此控件,并将其强制转换为其本机类型以进行进一步操作。
对于内部 MSForms 类型(如 CommandButton(,这很容易做到,例如:
Dim cmdbtn As iGrid
Set cmdbtn = Me.Controls("cmdOk")
但是,此方法不适用于 iGrid:
Dim grid As iGrid
Set grid = Me.Controls("iGrid1")
我们总是得到
类型不匹配
错误。
这也无济于事(同样的问题(:
Dim grid As iGrid
Set grid = Me.Controls("iGrid1").Object
有没有办法在 VBA 用户窗体中通过其字符串名称动态获取本机类型的 ActiveX 控件?
试试这个:
Public iGridData As Control
Set iGridData = UserForm1.Controls.Add("iGrid700_10Tec.iGrid", "iGridName", True)