复制一个combobox项目列表,而不影响当前写在combobox内的内容?

如何重新填充combobox项目列表,而不影响当前写在combobox内的内容?

我目前有代码,看起来有点像:

Private Sub ComboBox1_DropButtonClick() Dim v As Variant Dim selText As String selText = ComboBox1.selText Dim i As Integer For i = 0 To ComboBox1.ListCount - 1 ComboBox1.RemoveItem (0) Next i v = Call CreateList() For i = 0 to Ubound(v) ComboBox1.AddItem v(i) Next v If selText <> "" Then ComboBox1.Text = selText End Sub 

我之前没有使用combobox,所以可能有更好的方法。 上面的代码有几个问题

  • 它会更改combobox的选定值(在尝试恢复之前)
  • 它触发Combobox1_change事件
  • 有我认为可能是不必要的循环。 是可以删除所有项目没有循环和添加多个项目没有循环。 要添加的项目由具有逗号分隔值的string创build。

我真的很感激帮助

有我认为可能是不必要的循环。 是可以删除所有项目没有循环和添加多个项目没有循环。

ComboBox1.Clear将删除所有项目没有循环。 添加后,您可以使用.List创build循环后添加项目到combobox。

 Private Sub Sample() Dim MyAr(1 To 5) For i = 1 To 5 MyAr(i) = i Next i ComboBox1.List = MyAr End Sub 

它触发Combobox1_change事件

要防止Combobox1_change event ,您将不得不使用像这样的布尔variables

它会更改combobox的选定值(在尝试恢复之前)

将值存储在variables中,然后重置combobox值,如果该值是下拉列表的一部分