【发布时间】:2011-03-01 04:50:29
【问题描述】:
如何以编程方式从 VBA 的组合框中删除所有项目?
【问题讨论】:
如何以编程方式从 VBA 的组合框中删除所有项目?
【问题讨论】:
前面的伪代码(用实际代码更新):
Do While ComboBox1.ListCount > 0
ComboBox1.RemoveItem (0)
Loop
基本上,当您有项目时,从组合框中删除第一个项目。删除所有项目后(计数 = 0),您的框为空白。
方法2:更好
ComboBox1.Clear
【讨论】:
.Clear 方法(当前 Access 365 版本),但 lst.RowSource = vbNullString 删除所有项目。否则Do ... Loop 对我来说似乎是最漂亮的解决方法。
不幸的是,您需要单独删除每个:
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,那么您会在中途遇到一个可爱的越界错误。
For i = ListBox1.ListCount to 1 Step -1,它应该可以正常工作。
For i = ListBox1.ListCount - 1 to 0 Step - 1 ListBox1.RemoveItem i Next
最简单的方法:
Combobox1.RowSource = "" 'Clear the list
Combobox1.Clear 'Clear the selected text
【讨论】:
您可以使用 ControlFormat 方法:
ComboBox1.ControlFormat.RemoveAllItems
【讨论】:
最佳方式:
Combobox1.items.clear();
【讨论】:
对于没有在用户表单组合框上提供 .clear 方法的 Access VBA,这个解决方案对我来说完美无缺:
If cbxCombobox.ListCount > 0 Then
For remloop = (cbxCombobox.ListCount - 1) To 0 Step -1
cbxCombobox.RemoveItem (remloop)
Next remloop
End If
【讨论】:
对于 Access VBA,如果 ComboBox 已填充值列表的行源类型,我发现以下工作:
ComboBox.RowSource = ""
【讨论】:
在 Access 2013 中,我刚刚对此进行了测试:
While ComboBox1.ListCount > 0
ComboBox1.RemoveItem 0
Wend
有趣的是,如果您在属性中设置项目列表,当您退出表单视图并返回设计视图时,这不会丢失。
【讨论】:
me.Combobox1.Clear
这是常用的方法
【讨论】:
我无法清楚地工作。 (Mac Excel) 但确实如此。
ActiveSheet.DropDowns("CollectionComboBox").RemoveAllItems
【讨论】:
如果您想简单地删除组合框中的值:
me.combobox = ""
如果要删除组合框的记录集,最简单的方法是:
me.combobox.recordset = ""
me.combobox.requery
【讨论】:
Private Sub cmdClear_Click()
ComboBox1.Value = Null
ComboBox2.Value = Null
End Sub
【讨论】: