Excel VBA文本框以填充组合框

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Excel VBA文本框以填充组合框相关的知识,希望对你有一定的参考价值。

我得到了一些帮助,让我难以忍受了一段时间。请原谅长篇解释。

我有一个组合框,在userform初始化时从一个范围填充。当我输入组合框时,抢先文本按照预期显示。然后,我为一个文本框创建了一个Change事件,该事件根据输入到组合框中的内容进行填充。那部分一切正常(我从其他网站获得了该代码)。

我有两种方法将数据输入到组合框中,一种是通过键入,另一种是当另一个文本框中的文本发生变化时,它还会填充组合框。我通过“combobox1 = textbox1.value”来做到这一点。现在这是我难倒的部分。使用combobox1 = textbox1方法时,它无法正常工作(或者更多,我希望它如何工作)。它输入textbox1中包含的文本,但它没有显示完整的抢先文本行,例如在组合框中键入时的行为,也没有填充组合框更改时更改的文本框。如果我然后单击组合框并点击空格键,则会触发更改事件,并显示范围中的其他抢先文本。我尝试在结尾处放置一个空格“”命令combobox1 = textbox1&“”,希望它会认为有更多的文字要来,但是没有用。有没有办法让VBA做到这一点,还是我要求太多了?

希望这是有道理的。

保罗保罗

答案

似乎ComboBox AutoCompletion功能仅由UI输入触发

你可以解决它如下:

Private Sub TextBox1_Change()
    Dim iList As Long
    With Me.ComboBox1
        For iList = 0 To .ListCount - 1
            If Left(.List(iList), Len(Me.TextBox1.Value)) = Me.TextBox1.Value Then
                .ListIndex = iList ' if any combobox1 value matches textbox1 value  then select it
                Exit Sub
            End If
        Next
        .ListIndex = -1 ' if no combobox1 value matches textbox1 value then "deselect" combobox1 
    End With
End Sub

以上是关于Excel VBA文本框以填充组合框的主要内容,如果未能解决你的问题,请参考以下文章

Excel VBA在IE11中使用自动完成填充文本框

Excel VBA将组合框列表从静态范围更改为动态范围

如何使用 VBA 根据值和组合框选择填充 excel 中的行?

访问 VBA - 使用 VBA 的 SQL 语句使用文本框组合框值在表单上填充列表框 OR

使用Excel VBA调整列表框以显示比列表框宽度更长的字符串

组合选项框和组合框以将记录添加到右表