用于填充组合框的 Excel VBA 文本框



我正在寻求一些让我难倒了一段时间的帮助。请原谅冗长的解释。

我有一个组合框,当用户表单初始化时,它会从某个范围填充。当我在组合框中键入时,抢占式文本会按预期显示。然后,我有一个文本框的 Change 事件,该事件根据在组合框中键入的内容进行填充。这部分工作正常(我从另一个站点获得了该代码(。

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

希望这是有道理的。

干杯 保罗

>似乎ComboBox自动完成功能仅由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

最新更新