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

Excel VBA textbox to populate combobox

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

我有一个组合框,它在用户窗体初始化时从一个范围内填充。当我输入组合框时,优先文本会按预期显示。然后我有一个文本框的 Change 事件,该事件根据输入到组合框中的内容进行填充。那部分工作正常(我从另一个站点获得该代码)。

我有两种方法可以将数据输入到组合框中,一种是通过键入,另一种是当另一个文本框中的文本更改时,它也会填充组合框。我通过 "combobox1 = textbox1.value" 来做到这一点。现在这是我被难住的部分。使用 combobox1 = textbox1 方法时,它无法正常工作(或者更确切地说,我希望它如何工作)。它输入包含在 textbox1 中的文本,但它不会像在组合框中键入时那样显示整行优先文本,也不会填充随组合框更改而更改的文本框。如果我随后单击组合框并点击 space 条,更改事件将触发,并且该范围内的其余优先文本将出现。我尝试在末尾放置一个 space " " 命令 combobox1 = textbox1 & " " 希望它会认为还有更多文本,但这没有用。有什么方法可以让 VBA 做到这一点,还是我要求太多了?

希望这是有道理的。

干杯 保罗

似乎 ComboBox A​​utoCompletion 功能仅由 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