【问题标题】:Removing All Items From A ComboBox?从组合框中删除所有项目?
【发布时间】:2011-03-01 04:50:29
【问题描述】:

如何以编程方式从 VBA 的组合框中删除所有项目?

【问题讨论】:

    标签: vba combobox


    【解决方案1】:

    前面的伪代码(用实际代码更新):

    Do While ComboBox1.ListCount > 0
        ComboBox1.RemoveItem (0)
    Loop
    

    基本上,当您有项目时,从组合框中删除第一个项目。删除所有项目后(计数 = 0),您的框为空白。

    方法2:更好

    ComboBox1.Clear
    

    【讨论】:

    • 抱歉,VBA 没有为组合框控件提供明确的方法。
    • @Sham Yemul:我可以确认 ComboBox.Clear 确实有效,至少在 Excel 2010 中的 ActiveX ComboBox 控件上是这样。
    • 您使用的是什么版本的 excel,因为。清除在 2016 年对我有用。
    • Access ComboBox 和 ListBox 也没有 .Clear 方法(当前 Access 365 版本),但 lst.RowSource = vbNullString 删除所有项目。否则Do ... Loop 对我来说似乎是最漂亮的解决方法。
    【解决方案2】:

    不幸的是,您需要单独删除每个:

           For i = 1 To ListBox1.ListCount
    
               'Remove an item from the ListBox using ListBox1.RemoveItem 
           Next i
    

    更新 - 我不知道为什么我的答案没有包含完整的解决方案:

    For i = ListBox1.ListCount - 1 to 0 Step - 1 
            ListBox1.RemoveItem i 
    Next i 
    

    【讨论】:

    • 只是指出(在像白痴一样挣扎之后)您每次都在删除顶部项目。如果您尝试使其成为i,那么您会在中途遇到一个可爱的越界错误。
    • @PsychoData 意味着你可以做For i = ListBox1.ListCount to 1 Step -1,它应该可以正常工作。
    • For i = ListBox1.ListCount - 1 to 0 Step - 1 ListBox1.RemoveItem i Next
    【解决方案3】:

    最简单的方法:

    Combobox1.RowSource = ""  'Clear the list
    Combobox1.Clear           'Clear the selected text
    

    【讨论】:

      【解决方案4】:

      您可以使用 ControlFormat 方法:

      ComboBox1.ControlFormat.RemoveAllItems
      

      【讨论】:

        【解决方案5】:

        最佳方式:

        Combobox1.items.clear();
        

        【讨论】:

          【解决方案6】:

          对于没有在用户表单组合框上提供 .clear 方法的 Access VBA,这个解决方案对我来说完美无缺:

             If cbxCombobox.ListCount > 0 Then
                  For remloop = (cbxCombobox.ListCount - 1) To 0 Step -1
                      cbxCombobox.RemoveItem (remloop)
                  Next remloop
             End If
          

          【讨论】:

          • 此方法仅在组合框源设置为 valuelist 时有效
          【解决方案7】:

          对于 Access VBA,如果 ComboBox 已填充值列表的行源类型,我发现以下工作:

          ComboBox.RowSource = ""
          

          【讨论】:

            【解决方案8】:

            在 Access 2013 中,我刚刚对此进行了测试:

            While ComboBox1.ListCount > 0
                ComboBox1.RemoveItem 0
            Wend
            

            有趣的是,如果您在属性中设置项目列表,当您退出表单视图并返回设计视图时,这不会丢失。

            【讨论】:

              【解决方案9】:

              me.Combobox1.Clear

              这是常用的方法

              【讨论】:

                【解决方案10】:

                我无法清楚地工作。 (Mac Excel) 但确实如此。

                ActiveSheet.DropDowns("CollectionComboBox").RemoveAllItems

                【讨论】:

                  【解决方案11】:

                  如果您想简单地删除组合框中的值:

                  me.combobox = ""

                  如果要删除组合框的记录集,最简单的方法是:

                  me.combobox.recordset = ""
                  me.combobox.requery
                  

                  【讨论】:

                    【解决方案12】:
                    Private Sub cmdClear_Click()
                        ComboBox1.Value = Null
                        ComboBox2.Value = Null
                    End Sub
                    

                    【讨论】:

                      猜你喜欢
                      • 1970-01-01
                      • 1970-01-01
                      • 1970-01-01
                      • 2020-12-13
                      • 1970-01-01
                      • 1970-01-01
                      • 2013-07-20
                      • 2013-04-20
                      相关资源
                      最近更新 更多