Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vba 重新填充组合框项目列表而不影响组合框中当前写入的内容?_Vba_Excel_Combobox - Fatal编程技术网

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每天都学习新的东西,我有时间的时候就要玩它。