我正在寻求一些帮助,这让我难倒了一段时间。请原谅冗长的解释。
我有一个组合框,它在用户表单初始化时从一个范围内填充。当我在组合框中键入时,抢先文本会按预期显示。然后我有一个文本框的 Change 事件,它根据输入到组合框中的内容进行填充。那部分一切正常(我从另一个站点获得了该代码)。
我有两种方法可以将数据输入组合框,一种是通过键入,另一种是当另一个文本框中的文本更改时,它也会填充组合框。我通过“combobox1 = textbox1.value”来做到这一点。现在这是我被难住的部分。使用 combobox1 = textbox1 方法时,它无法正常工作(或者更是如此,我希望它如何工作)。它输入包含在 textbox1 中的文本,但它不会像在组合框中键入时那样显示完整的抢占文本行,也不会填充随组合框更改而更改的文本框。如果我然后单击组合框并点击空格键,则更改事件将触发,并且范围内的其余抢占文本将出现。我尝试在组合框1 = 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
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句