代码之家  ›  专栏  ›  技术社区  ›  TecMan

Excel VBA:如何将从用户窗体的控件集合获取的控件转换为其本机ActiveX类型?

  •  2
  • TecMan  · 技术社区  · 7 年前

    我们使用的是第三方ActiveX网格控件 10Tec iGrid 在用户窗体上的Excel 2016 VBA应用程序中。我们需要通过动态生成的字符串名称检索该控件,并将其转换为其本机类型以进行进一步操作。

    对于CommandButton之类的内在MSForms类型,这很容易做到,例如:

    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控件?

    1 回复  |  直到 7 年前
        1
  •  0
  •   Vaibhav Vishal    5 年前

    试试这个:

    Public iGridData As Control
    Set iGridData = UserForm1.Controls.Add("iGrid700_10Tec.iGrid", "iGridName", True)