Vba 重新填充组合框项目列表而不影响组合框中当前写入的内容?
如何在不影响组合框中当前写入内容的情况下重新填充组合框项目列表 我目前的代码看起来有点像:Vba 重新填充组合框项目列表而不影响组合框中当前写入的内容?,vba,excel,combobox,Vba,Excel,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.Remo
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
Private子组合框1\u DropButtonClick()
Dim v作为变体
将文本设置为字符串
selText=ComboBox1.selText
作为整数的Dim i
对于ComboBox1.ListCount-1的i=0
ComboBox1.RemoveItem(0)
接下来我
v=调用CreateList()
对于i=0至Ubound(v)
ComboBox1.AddItem v(i)
下一个v
如果为selText“”,则ComboBox1.Text=selText
端接头
我以前没有使用过组合框,所以可能有更好的方法。上面的代码有几个问题
- 它更改组合框的选定值(在尝试还原之前)
- 它触发Combobox1_更改事件
- 我认为有些循环可能是不必要的。可以在不循环的情况下删除所有项目,也可以在不循环的情况下添加多个项目。要添加的项是从具有逗号分隔值的字符串创建的
ComboBox1.Clear
将删除所有项目而不循环。对于添加,您可以在创建循环后使用.List
将项目添加到组合框中
Private Sub Sample()
Dim MyAr(1 To 5)
For i = 1 To 5
MyAr(i) = i
Next i
ComboBox1.List = MyAr
End Sub
它触发Combobox1_更改事件
要防止出现Combobox1\u更改事件
,必须使用布尔变量,如
它更改组合框的选定值(在尝试还原之前)
将该值存储在变量中,然后重置组合框值(如果该值是与事件触发相关的下拉列表的一部分)。您是否可以不使用application.enablevents=false?@99moorem否-它不会影响控件的事件。(好吧,如果控件在工作表上,它确实会影响一些事件,但这些事件实际上属于容器,而不是控件)@Rory-Hmm每天都学习新的东西,我有时间的时候就要玩它。