Excel VBA文本框以填充组合框

问题描述 投票:0回答:1

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

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

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

希望这是有道理的。

保罗保罗

excel vba combobox textbox
1个回答
0
投票

似乎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
© www.soinside.com 2019 - 2024. All rights reserved.