【问题标题】:Using .AddItem With Different Comboboxes in Excel VBA Userform在 Excel VBA 用户窗体中使用具有不同组合框的 .AddItem
【发布时间】:2015-06-27 09:15:43
【问题描述】:

我有一个包含很多组合框的用户表单。我在初始化用户表单时尝试使用 .AddItem,但没有成功。

这是我迄今为止尝试过的:

Sub Userform_Initialize()
  Dim cCont As MSForms.ComboBox

  For Each cCont In Me.Controls
    cCont.AddItem "Item Added"
  Next cCont
End Sub

我通常会出现运行时错误 13“类型不匹配”。不确定这是否与我在用户窗体上的按钮有关。

如何循环遍历用户表单并将.AddItem 用于每个组合框?获得有关如何执行此操作的代码后,我会将其包装在 If 语句中,以便仅将其添加到名称中包含某些单词的某些组合框中,如果这有助于上下文。

提前致谢,

-安东尼

【问题讨论】:

    标签: vba for-loop foreach combobox userform


    【解决方案1】:

    安东尼,

    您正试图在窗体上的每个控件上调用AddItem 方法。但并非所有控件都提供 AddItem 方法。您需要检查特定控件是否为组合框。只有当控件是组合框时,您才可以调用 AddItem 方法。

    如何遍历用户窗体并将 .AddItem 用于每个组合框?

    目前尚不清楚您需要在哪里循环。你能说得更具体一点吗?

    【讨论】:

    • “但并非所有控件都提供 AddItem 方法”让我考虑使用 if 语句检查控件类型。一旦我将 cCont.AddItem "text" 包装到 if 语句中,它就可以正常工作了。谢谢!
    【解决方案2】:

    我发现将控件添加到用户窗体的最佳方法是遵循此过程。

    Dim NewComboBox as Control
    Set NewComboBox = Me.Controls.Add("Forms.ComboBox.1")
        With NewComboBox
            'Inside of this part you can put .name or any other property in the
            'activex controls properties part, .left .top .width and .height determine the size of the box
            .Name = Whatever Name You Desire
        End With
    

    把它放在你的 userform_initialize() 事件中,你就可以开始了。

    【讨论】:

      【解决方案3】:

      您的代码对我来说很好,可以将两个组合框添加到用户窗体中。我唯一能想到的是由于某种原因没有启用正确的引用。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2021-07-18
        • 1970-01-01
        • 2018-09-27
        • 1970-01-01
        • 2015-05-26
        • 2017-12-23
        • 2014-02-09
        相关资源
        最近更新 更多